[英]Cannot override Java function in Kotlin
我目前正在使用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()
。 此回调的定义方式与BLE API源中的onConnectionStateChange()
相同,那么为什么我不能覆盖它呢? 这就是我试图覆盖它的方式(仍然在BluetoothGattCallback()
对象中):
fun onConnectionUpdated(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
/* do stuff */
}
编辑:我忘了提到,当我添加
override
关键字时,它提供了错误消息:OnConnectionUpdated overrides nothing.
。
原谅我的天真,我不经常与Kotlin / Java合作,谢谢。
您不应该使用此方法,它仅供内部使用而不是公共API的一部分。 因此它通过@hide
隐藏。 有关@hide
以及如何访问它的更多信息,请参阅Android源代码中的@hide是什么意思?
请注意,使用反射如上面在描述链接来访问它不鼓励
黑暗灰名单 :
- 对于目标SDK低于API级别28的应用:每次使用黑暗
允许使用灰名单界面。- 目标SDK为API级别28或更高级别的应用程序:与黑名单相同的行为
黑名单 :无论目标SDK如何都受限制。 该平台的行为就像界面不存在一样。 例如,每当应用程序尝试使用它时,它都会抛出NoSuchMethodError / NoSuchFieldException,并且当应用程序想要知道特定类的字段/方法列表时,它不会包含它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.