I've created a Kotlin subclass of a Java class:
class AlarmReceiver : WakefulBroadcastReceiver() {
companion object {
const val ACTION_NOTIFY = "..."
}
override fun onReceive(context: Context, intent: Intent) { ... }
}
WakefulBroadcastReceiver
has two static methods:
static boolean completeWakefulIntent(Intent intent)
static ComponentName startWakefulService(Context context, Intent intent)
and calling these from within my AlarmReceiver
class works just as I expect. However, I'd like to call one of these methods outside of my Kotlin subclass.
The Problem
If I try AlarmReceiver.completeWakefulIntent(intent)
from a different Kotlin class, I get the following compilation error:
Unresolved reference: completeWakefulIntent
I think this is because the compiler is trying to resolve the method on AlarmReceiver
's companion object instead of finding the inherited method from its superclass. As a workaround, I can directly define a method with the same signature on 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)
}
...
}
I think this has the same behavior I would have gotten had I relied on the default inherited method from a Java subclass, but I'm wondering if there's a better way to do this.
Is there a way to call an inherited static Java method on a Kotlin subclass?