Я задал аналогичный вопрос в другом сообщении (How to implement a method from a derived class that does not require cast), но это немного более конкретно. Предположим, у меня есть 3 класса: автомобиль, автомобиль, кабриолет. Автомобиль расширяет автомобиль, а кабриолет расширяет автомобиль. Мне нужен метод для каждого класса, который возвращает список, который не требует приведения во время выполнения. Я считаю, что это невозможно после того, как какой-то мысли, но я также хочу услышать ваше мнениеПроблема с множественным наследованием и переопределением метода в java
public class Vehicle {
public List<? extends Vehicle> getList() {
return new ArrayList<Vehicle>();
}
}
public class Car extends Vehicle {
@Override
public List<? extends Car> getList() {
return new ArrayList<Car>();
}
}
public class Convertible extends Car {
@Override
public List<? extends Convertible> getList() {
return new ArrayList<Convertible>();
}
}
Для того, чтобы не использовать бросок, я бы возвращать определенный тип элемента в списке (List<Convertible>
), но затем, если Я хотел расширить класс Convertible, я больше не мог этого делать.
Есть ли способ обойти эту ситуацию?
Не могли бы вы заставить «Vehicle» принять аргумент общего типа, а затем использовать этот аргумент для типа списка? –
Вам нужно бросить? Не можете ли вы просто использовать «Список extends Convertible> 'как тип переменной, сохраняющей возвращаемое значение. – aioobe