[解決済み] Kotlin: インターフェース ... はコンストラクタを持たない
2022-04-25 06:44:55
質問
私は自分のJavaコードの一部をKotlinに変換していますが、Kotlinコードで定義されているインターフェースをインスタンス化する方法がよく分かりません。例として、私はインターフェイスを持っています(Javaコードで定義されています)。
public interface MyInterface {
void onLocationMeasured(Location location);
}
そしてさらにKotlinのコードでこのインターフェースをインスタンス化する。
val myObj = new MyInterface { Log.d("...", "...") }
で、問題なく動作します。しかし、MyInterfaceをKotlinに変換してみると。
interface MyInterface {
fun onLocationMeasured(location: Location)
}
エラーメッセージが表示されるのですが。
Interface MyListener does not have constructors
をインスタンス化しようとすると、構文以外は何も変わっていないように見えるのですが。私はKotlinでインターフェイスがどのように機能するかを誤解しているのでしょうか?
どのように解決するのですか?
あなたのJavaコードはSAM変換に依存しています。SAM変換とは、ラムダを単一の抽象メソッドを持つインターフェースに自動的に変換することです。SAM変換は 現在サポートされていません は、Kotlinで定義されたインターフェイスのためのものです。その代わり、そのインターフェースを実装した匿名オブジェクトを定義する必要があります。
val obj = object : MyInterface {
override fun onLocationMeasured(location: Location) { ... }
}
関連
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] Kotlin 三項条件演算子
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
-
[解決済み】Kotlinで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 実装 サイバーパンク風ボタン
おすすめ
-
java.util.NoSuchElementException 原因解析と解決方法
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
HttpClientがGZIP形式でない場合の対処法
-
java 例外。Javaツールの初期化
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について