Как создать базовый класс с различными универсальными типами? - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать 2-й конструктор и вызвать родительский класс с другим универсальным типом, основанным на вызове конструктора. 1 тип - 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
    }

1 Ответ

1 голос
/ 14 марта 2019

Это одна и та же подпись JVM. Вы можете определить абстрактный класс (AbstractTrackInfoDTO), который является родительским для TrackInfoDTO и GroupTrackInfoDTO, а затем объявить конструктор, как показано ниже:

constructor(operation: BizOperation<AbstractTrackInfoDTO>,  mCallback: BizTaskCallback<TrackSettings>) : super(operation) {
    this.mCallback = mCallback
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...