当前位置: 首页 > 知识库问答 >
问题:

如何访问Kotlin子类上的Java静态方法?

柳钟展
2023-03-14
class AlarmReceiver : WakefulBroadcastReceiver() {

    companion object {
        const val ACTION_NOTIFY = "..."
    }

    override fun onReceive(context: Context, intent: Intent) { ... }
}
    null

从我的alarmreceiver类中调用这些代码的工作方式与我预期的一样。但是,我想在Kotlin子类之外调用其中的一个方法。

如果从不同的Kotlin类尝试AlarmReceiver.CompleteWakeFulIntent(intent),则会出现以下编译错误:

未解析得引用:completeWakefulIntent

class AlarmReceiver : WakefulBroadcastReceiver() {

    companion object {
        const val ACTION_NOTIFY = "..."

        // Just call the superclass implementation for now
        fun completeWakefulIntent(intent: Intent): Boolean =
            WakefulBroadcastReceiver.completeWakefulIntent(intent)
    }

    ...
}

共有1个答案

龙枫
2023-03-14

在Kotlin中,与Java不同的是,静态成员不由子类继承,即使它们可以在没有基类名的子类内部调用。

在子类之外,必须使用基类名调用基类静态函数:

WakefulBroadcastReceiver.completeWakefulIntent(intent)

这种行为似乎存在于伴生对象概念中:层次结构中类的伴生对象互不包含。

 类似资料: