Kotlinの静的初期化ブロックに相当するものは何ですか?
Kotlinは静的なものを持たないように設計されていることを理解しています。同等のセマンティクスを持つものを探しています-クラスが最初にロードされたときにコードが1回実行されます。
私の特定のユースケースは、Android AppCompatライブラリからDayNight機能を有効にしたい場合で、命令は、Applicationクラスの静的初期化ブロックにコードを配置するように指示しています。
Kotlinの静的初期化ブロックに相当するものは何ですか?
Kotlinは静的なものを持たないように設計されていることを理解しています。同等のセマンティクスを持つものを探しています-クラスが最初にロードされたときにコードが1回実行されます。
私の特定のユースケースは、Android AppCompatライブラリからDayNight機能を有効にしたい場合で、命令は、Applicationクラスの静的初期化ブロックにコードを配置するように指示しています。
回答:
ある観点から、Kotlincompanion objectのsはJavaクラスの静的部分に相当します。特に、クラスが最初に使用される前に初期化されます。これにより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
    }
}
クラス内のオブジェクト宣言は、companionキーワードでマークできます。この下では、java staticmethodやvariable.LIkeclassname.methodnameまたはclassname.variablenameのように使用できます。