1. ホーム
  2. kotlin

[解決済み] Kotlinの静的メソッドと変数

2022-02-01 04:40:20

質問

クラスインスタンスをパブリックスタティック変数に保存できるようにしたいが、Kotlinでこれを行う方法がわからない。

class Foo {

    public static Foo instance;
    public Foo() {
        instance = this;
    }

}

解決方法は?

Java の静的フィールドに最も近いのはコンパニオン・オブジェクトです。それらのドキュメントリファレンスはこちらでご覧になれます。 https://kotlinlang.org/docs/reference/object-declarations.html#companion-objects

Kotlinで書くと、次のようなコードになります。

class Foo {

    companion object {
        lateinit var instance: Foo
    }

    init {
        instance = this
    }

}

フィールドやメソッドを Java の呼び出し元に対して静的なものとして公開したい場合、以下のようにします。 @JvmStatic アノテーションを使用します。

class Foo {

    companion object {
        @JvmStatic lateinit var instance: Foo
    }

    init {
        instance = this
    }

}