[java] Kotlin의 정적 초기화 블록

Kotlin 의 정적 초기화 블록 에 해당하는 것은 무엇입니까 ?

Kotlin이 정적 인 것을 갖지 않도록 설계되었음을 이해합니다. 동일한 의미를 가진 무언가를 찾고 있습니다. 클래스가 처음로드 될 때 코드가 한 번 실행됩니다.

내 특정 사용 사례는 Android AppCompat 라이브러리에서 DayNight 기능을 사용하도록 설정하고 클래스의 정적 초기화 블록에 일부 코드를 넣으 라는 지침Application 입니다.



답변

어떤 관점에서 보면 Kotlin companion object의 s 는 자바 클래스의 정적 부분과 동일합니다. 특히 클래스가 처음 사용되기 전에 초기화되며이를 통해 해당 init블록을 Java 정적 초기화 프로그램의 대체물로 사용할 수 있습니다 .

class C {
    companion object {
        init {
            //here goes static initializer code
        }
    }
}


답변

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과 같이 사용할 수 있습니다.


답변