android - Kotlin 扩展到第二个构造函数

标签 android kotlin

我现在的类(class)如下:

class MyGcmListenerService : GcmListenerService() {}

GCMListenerService如下

public class GcmListenerService extends zzb {}

现在我希望扩展到另一个构造函数。 当我尝试这样做时,

class MyGcmListenerService : GcmListenerService(), PushDataReceiver {}

我得到错误

Only one class may appear in supertypelist. This type has a constructor, and thus must be initialized here

PushDataReceiver 如下

public abstract class PushDataReceiver extends BroadcastReceiver

我一直在尝试谷歌

Kotlin adding secondary constructor

不知何故,我无法就我的问题获得任何帮助。

最佳答案

与 Java 一样,Kotlin 不支持多重继承。您一次只能扩展一个类——尽管您可以实现多个接口(interface)。如果您同时需要 GcmListenerService 子类和 BroadcastReceiver,则必须为它们创建单独的类。


解释您收到的错误消息:

Only one class may appear in supertypelist. This type has a constructor, and thus must be initialized here

此错误指出当您扩展一个类时(与实现接口(interface)时不同),您需要通过添加括号来调用其构造函数(如果它具有构造函数参数,请在这些括号内传递这些参数),就像您对另一类:

class MyGcmListenerService : GcmListenerService(), PushDataReceiver() {}

但是同样,由于您只能有一个直接父类(super class),所以这行不通。

关于android - Kotlin 扩展到第二个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921400/

相关文章:

android-gradle-plugin - 无法在 Android kotlin 项目中使用本地注释处理器

java - 加载主类时出现 Kotlin LinkageError - 类文件中存在非法类名 "Ljava/lang/String;"(第 8 维数组)

android - 为什么 LiveData 值需要包装器?

kotlin - 定位JavaScript时,可以在Kotlin中使用协程吗?

javascript - webview 中的 onselectionchange Javascript 事件

android - CalendarView 无法将日期设置为当天?

android - 为什么类路径更改后 Android 中的应用程序签名会更改?

android - 无法从Firebase数据库检索数据以显示在我的文本框中

android - 解析 XML : No element found. 时出错,因此不会生成 R.java

Android - EditText自定义样式