Kotlin 의 정적 초기화 블록 에 해당하는 것은 무엇입니까 ?
Kotlin이 정적 인 것을 갖지 않도록 설계되었음을 이해합니다. 동일한 의미를 가진 무언가를 찾고 있습니다. 클래스가 처음로드 될 때 코드가 한 번 실행됩니다.
내 특정 사용 사례는 Android AppCompat 라이브러리에서 DayNight 기능을 사용하도록 설정하고 클래스의 정적 초기화 블록에 일부 코드를 넣으 라는 지침Application
입니다.
답변:
어떤 관점에서 보면 Kotlin companion object
의 s 는 자바 클래스의 정적 부분과 동일합니다. 특히 클래스가 처음 사용되기 전에 초기화되며이를 통해 해당 init
블록을 Java 정적 초기화 프로그램의 대체물로 사용할 수 있습니다 .
class C {
companion object {
init {
//here goes static initializer code
}
}
}
object
선언이있는 솔루션 은 지연 초기화로 인해 실제로 어딘가에서 사용해야합니다.
companion object {
// Example for a static variable
internal var REQUEST_CODE: Int? = 500
// Example for a static method
fun callToCheck(value: String): String {
// your code
}
}
클래스 내부의 객체 선언은 동반 키워드로 표시 할 수 있으며,이 아래에서 java static method 및 variable.LIke classname.methodname 또는 classname.variablename과 같이 사용할 수 있습니다.