我正在尝试创建第二个构造函数,并根据构造函数调用以不同的泛型类型调用父类。 一种类型是GroupTrackInfoDTO,另一种类型是TrackInfoDTO,但我不断收到编译错误
平台声明冲突:以下声明具有相同的 JVM签名
我的代码:
class GetSettingsTask
: BizOperationTask {
private var mCallback: BizTaskCallback<TrackSettings>? = null
constructor(operation: BizOperation<GroupTrackInfoDTO>, mCallback: BizTaskCallback<TrackSettings>) : super(operation) {
this.mCallback = mCallback
}
constructor(o: BizOperation<TrackInfoDTO>, mCallback: BizTaskCallback<TrackSettings>) : super(o) {
this.mCallback = mCallback
}
如果我向其中一个构造函数中添加一个虚拟参数,则它起作用了,但不知道为什么
constructor(o: BizOperation<TrackInfoDTO>, mCallback: BizTaskCallback<TrackSettings>, i: Int = 0) : super(o) {
this.mCallback = mCallback
}
答案 0 :(得分:1)
它们是相同的JVM签名。您可以定义一个抽象类(AbstractTrackInfoDTO
),该抽象类是TrackInfoDTO
和GroupTrackInfoDTO
的父类,然后声明构造函数,如下所示:
constructor(operation: BizOperation<AbstractTrackInfoDTO>, mCallback: BizTaskCallback<TrackSettings>) : super(operation) {
this.mCallback = mCallback
}