[Kotlin] Companion Object?

moKo·2021년 10월 3일
0

Kotlin

목록 보기
2/2

Companion Object

뭐하는 녀석일까🤔

이 companion object라는 녀석은 kotlin에서만 존재한다.
보통 이걸 사용하는 이유는 kotlin에는 자바에서 사용하던 static이 없기 때문인데, 비슷한 기능을 제공하기때문에 자주 사용된다.

간략히 형태를 알아보자면,

class moko {
    companion object {
        val PERSON = "heymoko"
        fun comeon() {
        }
    }
}

이런식으로 구성되는데, 외부에서 접근하기 위해선

moko.TAG
moko.companion.TAG
moko.comeon()

이런식으로 접근이 가능하다

굳이 class안에 담지 않아도

 companion object {
        private const val DEFAULT_URL = "http://www.google.com"
    }

이렇게 구성하여, 편하게 꺼내 사용할 수도 있다.

webview.loadUrl(DEFAULT_URL)    // www.google.com이 정상적으로 실행된다.

Companion object를 자바에서는 못쓸까?

몇 가지만 변경해주면 자바에서도 사용할 수 있다.

const처리가 되어있는 속성들은 별도의 작업없이 바로 자바에서 사용할 수 있으며, 함수는 @JvmStatic이라는 어노테이션을 사용하면 자바에서 사용할 수 있다.

class moko {
    companion object {
        const val PERSON = "heymoko"
        @JvmStatic fun comeon() {
        }
    }
}

위와 같이 변경을 해주면, 자바에서도 사용이 가능하고, const를 붙이지 못하는 형식의 경우에는 @JvmField를 사용하면 해결이 사용이 가능해진다.

profile
🔥 Feelings fade, results remain

0개의 댓글