java - 如何在 Kotlin 中覆盖隐藏的 Java 回调:反射
问题描述
我正在使用 Android API 27 和 Kotlin,并希望覆盖通过@hide
. 这个问题是继我之前的问题之后的问题。有问题的回调在BluetoothGatt.javaonConnectionUpdated
中定义。回调函数也在BluetoothGattCallback.java中定义,所以我什至不确定我需要覆盖哪个版本。
我知道我需要使用反射来访问一个类的隐藏成员函数,但我不知道如何实际访问该函数并覆盖它。
这是我正在尝试的,但无济于事:
val kclass = Class.forName("android.bluetooth.BluetoothGatt")
val kmethod = kclass.getMethod("onConnectionUpdated")
override fun kmethod(gatt: BluetoothGatt, interval: Int, latency: Int, timeout: Int, status: Int) {
/* do stuff */
}
在这种情况下的错误是:
kmethod overrides nothing
。
我知道我也可以使用 Kotlin 的反射库,但同样,我不确定如何使用。
谢谢。
解决方案
推荐阅读
- javascript - 如何在 JS 中编码查询字符串并在 PHP 中解码?
- python - 熊猫根据列值添加行
- typescript - 从元组评估函数的参数类型
- opengl - 可以使用顶点数组渲染光线投射吗?
- python - 显示当前小部件类之外的小部件
- python - 如何将字符串写入内存视图?
- sql-server - 导出 SQL 计划并清除 Azure SQL 数据库的计划缓存
- python - 在 Flask-SocketIO 事件中获取 Flask-Security 用户 ID
- android - 从 kotlin 到 firebase 的 int 按键
- grpc - 如果服务器和客户端托管在不同的机器上,gRPC“无法选择子通道”