如何从不需要强制转换的派生类实现方法

时间:2014-12-13 18:50:52

标签: java oop design-patterns

假设我有两类车辆和车

public class Vehicle {
    public List<? extends Vehicle> getList() {
        return new ArrayList<Vehicle>();
    }
}

@Override
public class Car extends Vehicle {
    public List<? extends Vehicle> getList() {
        return new ArrayList<Car>();
    }
}

如果我想从派生类的类中获取一个列表,那么我可以使用getList()而无需进行转换吗?

这不起作用(我明白为什么:

List<Car> list = new Car().getList();

这样做:

List<Car> list = (List<Car>)new Car().getList();

有没有办法阻止这种情况?

2 个答案:

答案 0 :(得分:1)

更改getList()课程中的Car方法,改为返回List<Car>

@Override
public List<Car> getList() {
    return new ArrayList<Car>();
}

答案 1 :(得分:0)

@Marv是对的,您可以更改您的作业,如下所示

List<? extends Vehicle> list = new Car().getList();