Why can't I call a method with a list of enum which implement an interface?
我正试图调用一个方法,该方法使用一个枚举列表(实现接口)的接口列表。这会导致以下编译错误:
1 | The method method(List<Interface>) in the type Class is not applicable for the arguments (List<Enum>) |
这是接口:
1 2 | public interface Interface { } |
这是实现接口的枚举:
1 2 | public enum Enum implements Interface { } |
这是调用类:
1 2 3 4 5 6 7 8 9 10 11 12 |
为什么有编译错误?在我看来,它应该工作,因为枚举实现了该接口。
1 2 | public static void method(List<? extends Interface> list){ } |
尽管枚举实现了接口,但list
1 | method(List<? extends Interface> list) |
有关详细信息,请参阅文档http://download.oracle.com/javase/tutorial/java/generics/通配符.html
这是因为即使是
1 2 3 4 | List<Car> listOfCars = new ArrayList<Car>(); List<Vehicle> listOfVehicles = listOfCars; listOfVehicles.add(new Bicycle()); // and now the list of cars contains a bicycle: not pretty. |
因为
您应该将变量更改为