Kotlin/포스팅

코틀린 동반 확장

짜집퍼박사(짜박) 2023. 12. 31. 03:08

현재까지 코틀린에서는 동반 확장(Companion Object Extension)이라는 공식적인 문법이나 지원은 없습니다. 코틀린에서는 확장 함수 및 확장 프로퍼티를 클래스의 인스턴스에 대해 정의하거나, 동반 객체에 대해 정의할 수 있습니다. 그러나 동반 객체 자체를 확장하는 것은 현재까지는 지원되지 않습니다.

다만, 동반 객체의 멤버 함수 또는 프로퍼티로서 확장 함수 또는 확장 프로퍼티를 정의하는 것은 가능합니다. 아래는 이에 대한 예제입니다.

class MyClass {
    companion object {
        fun companionFunction() {
            println("Companion function")
        }
    }
}

// 동반 객체의 멤버 함수를 확장 함수로 정의
fun MyClass.Companion.extensionFunction() {
    println("Extension function for companion object")
}

fun main() {
    MyClass.companionFunction() // Companion function
    MyClass.extensionFunction()  // Extension function for companion object
}

위의 예제에서 extensionFunction은 MyClass의 동반 객체에 대한 확장 함수로 정의되어 있습니다. 이를 통해 동반 객체에 새로운 멤버 함수를 추가할 수 있습니다.

또한, 동반 객체에 대한 확장 프로퍼티도 마찬가지로 정의할 수 있습니다. 하지만 동반 객체 자체를 확장하는 것은 코틀린에서는 제공되지 않습니다.

 

With ChatGPT