2014-12-13 70 views
0

派生類中的方法讓我們假設我有2班汽車和汽車如何實現從不需要投

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(); 

是否有辦法防止這種

回答

1

更改getList()方法Car類返回一個List<Car>來代替。

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

@Marv是正確的,你也可以改變你的分配如下

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