Kotlin 拡張機能を使用している場合は、Javaのプライベートフィールドにアクセスしたいと思います。Kotlin拡張機能アクセスJavaプライベートフィールド
JavaクラスABC
とします。 ABC
にはプライベートフィールドmPrivateField
が1つしかありません。どのような理由であれ、そのフィールドを使用する拡張機能をKotlinに書きたいと思います。
public class ABC {
private int mPrivateField;
}
Kotlin関数は次のようになります。私は取得しています
private fun ABC.testExtFunc() {
val canIAccess = this.mPrivateField;
}
エラーは次のとおりです。周り制限を取得の
Cannot access 'mPrivateField': It is private in 'ABC'
任意の方法?
あなたがやった理由java ** private **フィールドにアクセスする必要がありますか? –
これは、私のプロジェクトにソースコード全体を含めることなく拡張したい、外部のコンパイルされたライブラリからのものです。ライブラリにはAndroidカレンダーイベント用の「取得」メソッドがあり、「カレンダーイベントを挿入する」機能をクラスに追加したかったのです。 –
外部のライブラリを変更する**プライベート**フィールドは危険です*。それはおそらくあなたのアプリケーションを粉砕する。フィールド値を変更するには、java [reflection](http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/package-summary.html)を使用します。 –