我创建了一个Java类的Kotlin子类:
class AlarmReceiver : WakefulBroadcastReceiver() {
companion object {
const val ACTION_NOTIFY = "..."
}
override fun onReceive(context: Context, intent: Intent) { ... }
}
static boolean completeWakefulIntent(Intent intent)
static ComponentName startWakefulService(Context context, Intent intent)
并从我的 AlarmReceiver 类中调用这些工作就像我期望的那样 . 但是,我想在我的Kotlin子类之外调用其中一种方法 .
问题
如果我从不同的Kotlin类尝试 AlarmReceiver.completeWakefulIntent(intent) ,我会收到以下编译错误:
未解决的参考:completeWakefulIntent
我认为这是因为编译器试图在 AlarmReceiver 的伴随对象上解析该方法,而不是从其超类中查找继承的方法 . 作为一种解决方法,我可以在 AlarmReceiver.Companion 上直接定义具有相同签名的方法:
class AlarmReceiver : WakefulBroadcastReceiver() {
companion object {
const val ACTION_NOTIFY = "..."
// Just call the superclass implementation for now
fun completeWakefulIntent(intent: Intent): Boolean =
WakefulBroadcastReceiver.completeWakefulIntent(intent)
}
...
}
我认为这与我依赖Java子类的默认继承方法时会有相同的行为,但我想知道是否有更好的方法来做到这一点 .
有没有办法在Kotlin子类上调用继承的静态Java方法?