KotlinのJava機能を無効にすることはできません

amitchone:

私は現在、Kotlinを使用してAPI 27をターゲットとBLE対応のAndroidアプリを開発しています。

私は、内の関数を上書きしようとしていますandroid.bluetooth.BluetoothGatt特定のBLEイベントの処理を可能にするために上書きすることに利用できるコールバックの数があります。

例えば、私はオーバーライドしonConnectionStateChange()、次のように:

private val bluetoothGattCallback = object : BluetoothGattCallback() {

    override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
        /* do stuff */
    }

これはうまく動作します。

私の問題は、上書きしようとしているから茎onConnectionUpdated()このコールバックは、同じように定義されているonConnectionStateChange()BLE APIのソースなので、どのように私はそれをオーバーライドすることはできません来ますか?これは私が(まだ以内にそれを上書きしようとしています方法ですBluetoothGattCallback()オブジェクト):

fun onConnectionUpdated(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
    /* do stuff */
}

編集:私は、私が追加したときに、それを言及するのを忘れてしまったoverride、それはエラーメッセージを提供してキーワードを:OnConnectionUpdated overrides nothing.

私の認識の甘さを許して、私は多くの場合、Kotlin / Javaを使用おかげで動作しません。

leonardkraemer:

あなたはそれが内部使用のみのためではなく、パブリックAPIの一部であり、この方法を使うべきではありません。したがって、それが経由して隠されています@hide詳細については@hide、どのようにご覧にかかわらず、それをアクセスするAndroidのソースコードに@hide平均値を何?

上記のリンクに記載されているようにアクセスこれにリフレクションを使用することに注意してください推奨され

あなたが使用したい方法は、上にある濃いグレーリスト以下と制限

濃いグレーリスト

  • そのターゲットSDKアプリのAPIレベル28以下である:暗の各使用
    グレーリストインターフェイスが許可されます。
  • そのターゲットSDKはAPIレベル28以上であるアプリケーション:ブラックリストと同じ振る舞い

ブラックリスト:関係なく、ターゲットSDKの制限。プラットフォームは、インタフェースが存在しないかのように動作します。例えば、それはアプリがそれを使用しようとするたびにNoSuchMethodError /持たないNoSuchFieldExceptionがスローされます、そしてアプリは、特定のクラスのフィールド/メソッドの一覧を知りたいときには含まれません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=184653&siteId=1