Kotlin Companion Object
kotlin 코드를 보다보면 클래스 레벨에 선언된 companion object{ ... }
라는 문구를 볼 수 있다. 이건 뭘까?
자바의 static 과 비슷하다.
대략적인 사용법은 자바 클래스의 static 프로퍼티(클래스 프로퍼티), static 메서드(클래스 메서드) 와 비슷하다. 그러니까 클래스를 인스턴스화 시키지 않고도 companion object{ ... }
부분에 선언된 프로퍼티와 함수에 접근할 수 있다는 것이다.
class MyClass() {
companion object{
val prop = 1
fun say(): String = "Hello"
}
}
fun main() {
println(MyClass.prop) // 1
println(MyClass.say()) // Hello
하지만 자바의 static 과는 다르다.
또 하나의 객체가 만들어진 것이다.
companion object 는 두개의 키워드가 조합된 것이다. companion 과 object 이다. object 는 클래스를 싱글턴으로 만드는 키워드이고, 이러한 object 키워드에 companion 키워드가 더해진 것이다.
그러므로, MyClass 내부에 또다른 객체가 생성되었다고 생각하면 된다.
이름을 지을 수 있다.
또 다른 객체이므로 당연히 이름을 지을 수 있다.
class MyClass() {
companion object MyComp{
val prop = 1
fun say(): String = "Hello"
}
}
fun main() {
println(MyClass.MyComp.prop) // 1
println(MyClass.MyComp.say()) // Hello
println(MyClass.prop) // 1
println(MyClass.say()) // Hello
Author And Source
이 문제에 관하여(Kotlin Companion Object), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tjeong/Kotlin-Companion-Object저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)