자바에서 흔히 쓰이는 static 키워드(keyword)가 Kotlin에는 없습니다. Kotlin에서는 대다수의 사용자가 static 대신 companion object(동반 객체)를 사용하고 있습니다. static 키워드와 동일하게 다른 클래스에서 객체 생성 없이 companion object에 선언된 변수와 함수에 접근이 가능합니다.
이렇게 static과 유사하게 사용되고 있지만 static과 다른 차이점도 존재합니다.
먼저 companion object는 아래와 같이 구현할 수 있습니다.
class TestClass {
companion object {
const val TAG = "tag"
fun companionMethod() = println("Hello world")
}
}
companion object는 아래와 같은 방법으로 호출할 수 있습니다.
TestClass.Companion.TAG
TestClass.Companion.companionMethod()
TestClass.TAG
TestClass.companionMethod()
companion object는 static과 다르게 런타임에 생성되고 클래스 정의와 동시에 인스턴스가 생성됩니다.
class 내에는 하나의 compaion object만 선언 가능합니다.
또, companion object는 interface를 구현할 수 있습니다.
companion의 특징에 따라 factory pattern으로 유용하게 사용이 가능합니다.
class Factory {
companion object {
fun create() = Impl()
}
}
Factory.create()
반응형
'Kotlin' 카테고리의 다른 글
[Kotlin] StateFlow subscriptionCount 구독자 수 확인 (0) | 2021.10.15 |
---|---|
[Kotlin] Type checks와 형변환(casts) (0) | 2021.10.06 |
[Kotlin] Cold Stream(flow), Hot Stream(flow) 차이점 (0) | 2021.10.05 |
Kotlin callbackFlow callback listener의 데이터를 Coroutines flow로 보내기 (0) | 2021.09.13 |
[Kotlin] 기본적인 구문 - 2 (0) | 2021.09.07 |
[Kotlin] 기본적인 구문 - 1 (0) | 2021.09.03 |