我在另一篇文章 ( How to implement a method from a derived class that does not require cast ) 中问过类似的问题,但这个问题更具体一些。 假设我有 3 个类:Vehicle、Car、Convertible。 Car 扩展了 Vehicle,而 Convertible 扩展了 Car。我想要为每个类返回一个不需要在运行时强制转换的列表的方法。想了想觉得不可能,但也想听听大家的意见
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,我就不能再这样做了。
有什么办法可以解决这种情况吗?
最佳答案
你可以写
public class Vehicle<V extends Vehicle> {
public List<V> getList() {
return new ArrayList<V>();
}
}
public class Car<C extends Car> extends Vehicle<C> {
}
public class Convertible extends Car<Covertible> {
}
关于java - java中的多重继承和方法覆盖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463477/