У меня есть (для меня) сложная проблема Java-дженериков. Я попросил similar question в stackoverflow, но пришел к выводу, что этот пример сделал вещи слишком сложными. Итак, здесь упрощенный вопрос.Обновлено/упрощено: Java-генераторы с переопределением метода
меня есть два класса следующим
abstract public class Base {
abstract public Base doSomething(Base arg);
}
public class Variant extends Base {
@Override
public Variant doSomething(Variant arg) { // <-- error
// code
}
}
Сообщение об ошибке «Метод йоЗотеЬЫпд (вариант) типа Variant необходимо переопределить или реализовать метод супертипом.»
Выбранный ответ в initial question должен использовать измененные версии class Base<T extends Base<T>>
и class Variant<T extends Variant<T>> extends Base<T>
, который работает. Но тогда, если я хочу создать экземпляр Variant, мне нужно указать параметр generics, даже если я не нуждаюсь в нем.
Есть ли более простое решение?
класс Variant extends Base? –
Метод в 'Variant' * не * переопределяет значение в' Base', потому что типы аргументов не совпадают - неважно, что это подтип другого. – JonK