static
Kotlin にはキーワードはありません。
static
Kotlin で Java メソッドを表現する最適な方法は何ですか?
ベストアンサー1
関数を「コンパニオン オブジェクト」に配置します。
したがって、Java コードは次のようになります。
class Foo {
public static int a() { return 1; }
}
となります
class Foo {
companion object {
fun a() : Int = 1
}
}
これをKotlinコード内から次のように使用できます。
Foo.a();
しかし、Javaコード内から呼び出すには、次のようにする必要があります。
Foo.Companion.a();
(Kotlin 内からも動作します。)
ビットを指定する必要がない場合は、注釈を追加するか、コンパニオン クラスに名前を付けるCompanion
ことができます。@JvmStatic
からドキュメント:
コンパニオンオブジェクト
クラス内のオブジェクト宣言は、次の
companion
キーワードでマークできます。class MyClass { companion object Factory { fun create(): MyClass = MyClass() } }
コンパニオン オブジェクトのメンバーは、クラス名を修飾子として使用するだけで呼び出すことができます。
val instance = MyClass.create()
...
しかし、JVMでは、
@JvmStatic
アノテーションを使用すると、コンパニオンオブジェクトのメンバーを実際の静的メソッドとフィールドとして生成することができます。Java 相互運用性詳細についてはセクションをご覧ください。
注釈を追加すると@JvmStatic
次のようになります
class Foo {
companion object {
@JvmStatic
fun a() : Int = 1;
}
}
そして、それは実際の Java 静的関数として存在し、Java と Kotlin の両方から としてアクセスできるようになりますFoo.a()
。
名前が気に入らないだけの場合はCompanion
、次のようにコンパニオン オブジェクトに明示的な名前を指定することもできます。
class Foo {
companion object Blah {
fun a() : Int = 1;
}
}
これにより、Kotlin から同じ方法で呼び出すことができますが、Java のように呼び出すことができますFoo.Blah.a()
(Kotlin でも機能します)。