[解決済み] オーバーライドの事故 次の宣言は、同じ JVM シグネチャを持ちます。
2023-08-22 04:08:50
質問
Kotlinでこの部分がエラーになります。
class GitHubRepoAdapter(
private val context: Context,
private val values: List<GithubRepo>
) : ArrayAdapter<GithubRepo>(
context,
R.layout.list_item,
values
)
private val context: Context
ログにはこう書かれています。
Error:(14, 25) Accidental override: The following declarations have the same JVM signature (getContext()Landroid/content/Context;): fun <get-context>(): Context fun getContext(): Context!
何が原因なのかがわかりません。
どのように解決するのですか?
この現象は、Kotlinコンパイラが
val context
のゲッター、すなわちクラスの一次コンストラクタで宣言されたメソッド
getContext()
が、ベースクラス
ArrayAdapter<T>
にはすでにそのようなメソッド
.
以下のいずれかを実行することで解決できます。
-
クラスのコンストラクタのパラメータが
val
.class GitHubRepoAdapter(context: Context, ...
この場合、ゲッターは生成されないので、衝突はなくなります。
これはあなたの場合、望ましい解決策だと思われます。なぜなら、再宣言なしでも にはすでに合成プロパティ
context
から推論され、Java のゲッター . -
を使用します。
@JvmName
アノテーションを使用します。 に適用します。context
プロパティゲッター :class GitHubRepoAdapter(@get:JvmName("getAdapterContext") private val context: Context, ...
これにより、コンパイラは別のJVM名(アノテーションで指定されたもの)でゲッターを生成し、競合を回避しますが、Javaからのアクセスは直感的ではなくなります(特に、2つの類似した関数があるため)。Kotlinでは、元の名前でプロパティを使用することができます。
context
.
関連
-
[解決済み] Kotlinで多くの例外を同時にキャッチするには?
-
[解決済み] Safeargsライブラリがディレクションクラスを生成しない
-
[解決済み] Kotlinで抽象クラスのインスタンスを生成する
-
[解決済み] KotlinのIntArrayとArray<Int>の比較
-
[解決済み] Kotlinの "receiver "って何?
-
[解決済み] 実験的な "Kotlinコルーチン "は実運用に使えるか?
-
[解決済み] コルーチン:runBlockingとcoroutineScopeの比較
-
[解決済み] KotlinはJava Lombokのアクセサーを見ない?
-
[解決済み] KotlinでStringをIntに変換するには?
-
Kotlinのcrossinlineとnoinlineの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Kotlinで多くの例外を同時にキャッチするには?
-
[解決済み] Safeargsライブラリがディレクションクラスを生成しない
-
[解決済み] Kotlinで抽象クラスのインスタンスを生成する
-
[解決済み] kotlin.jvm.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError: ランタイムにKotlin Reflectionの実装が見つかりませんでした。kotlin-reflect.jar があることを確認してください。
-
[解決済み] Kotlinにおけるスレッドとコルーチンの違い
-
[解決済み] Kotlinの "receiver "って何?
-
[解決済み] Kotlin - ボイド vs. ユニット vs. ナッシング
-
[解決済み] Kotlinでオブジェクトをクローンする方法は?
-
[解決済み] Android Studioでビルドする際のエラー「Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7... 」を解決するには?
-
[解決済み] KotlinはJava Lombokのアクセサーを見ない?