[解決済み】KotlinでJavaの静的メソッドに相当するものは何ですか?
質問
はありません。
static
というキーワードがKotlinにあります。
を表現するのに最適な方法は何ですか?
static
Java のメソッドを Kotlin で使用できますか?
どのように解決するのですか?
関数をコンパニオンオブジェクトに配置します。
だから、このような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とKotlinの両方で使用できます。
Foo.a()
.
に嫌われるだけならまだしも
Companion
という名前にすることもできます。
コンパニオン・オブジェクトの名前を明示的に指定する場合は、次のようになります。
class Foo {
companion object Blah {
fun a() : Int = 1;
}
}
を使えば、Kotlin からも同じように呼び出すことができます。
のようにjavaから
Foo.Blah.a()
(これはKotlinでも動作します)。
関連
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Javaにおける静的クラス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] Javaでdoubleをfloatに変換する