我正在尝试创建第二个构造函数,并根据构造函数调用使用不同的泛型类型调用父类。
一种类型是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
    }

最佳答案

它们是相同的JVM签名。您可以定义一个抽象类(AbstractTrackInfoDTO),它是TrackInfoDTOGroupTrackInfoDTO的父级,然后声明构造函数,如下所示:

constructor(operation: BizOperation<AbstractTrackInfoDTO>,  mCallback: BizTaskCallback<TrackSettings>) : super(operation) {
    this.mCallback = mCallback
}

10-06 10:16