理解 Kotlin 中的这段代码

问题描述

我正在 android studio 中使用用于 BLE 的北欧库。我从他们的文档中将这段 java 代码复制到 kotlin 中。然而,kotlin 等价物对我来说有点难以理解。我以前从未见过这样的语法。我还在 dataCharacteristicCallback 和 dataRead 上收到了一些警告信号,我不知道如何调试。尤其是函数声明中的“dataCharacteristicCallback = object”真的让我感到困惑。我觉得这是一个 lambda 表达式或函数作为一等公民的应用程序,android studio 的 java 到 kotlin 的转换在这里可能有点不精确。

这里是原始的 java 位。

private final BlinkyButtonDataCallback buttonCallback = new BlinkyButtonDataCallback() {
        @Override
        public void onButtonStateChanged(@NonNull final BluetoothDevice device,final boolean pressed) {
            log(LogContract.Log.Level.APPLICATION,"Button " + (pressed ? "pressed" : "released"));
            buttonState.setValue(pressed);
        }

        @Override
        public void onInvalidDataReceived(@NonNull final BluetoothDevice device,@NonNull final Data data) {
            log(Log.WARN,"Invalid data received: " + data);
        }
    };

这里是 kotlin 等效项

        private val dataRead: dataCharacteristicCallback = object : dataRead() {
            fun onButtonStateChanged(device: BluetoothDevice,pressed: Boolean) {
                log(LogContract.Log.Level.APPLICATION,"Button " + if (pressed) "pressed" else "released")
                buttonState.setValue(pressed)
            }

            fun onInvalidDataReceived(device: BluetoothDevice,data: Data) {
                log(Log.WARN,"Invalid data received: $data")
            }
        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)