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?