3

Java 1.5 中是否有Enumerable.Cast()与 C# 相同的功能?我想将一个分配给ArrayList<MyType>声明为的变量List<Object>。Eclipse 抱怨“类型不匹配:无法转换ArrayList<MyType>List<Object>”。我只是使用ListArrayList不使用泛型,但编译器对此发出警告,我想清理一些警告。

4

1 回答 1

7

如果您要添加到列表中,那么投射它是不安全的。但是,如果您只想从列表中获取,您可以使用:

ArrayList<MyType> specificList = new ArrayList<MyType>();
List<? extends Object> generalList = specificList;

或更接近Enumerable.Cast将使用Iterable

Iterable<? extends Object> generalIterable = specificList;

很遗憾,您甚至需要在此处指定通配符(我很惊讶您这样做了),因为这Iterable是一个“只读”界面。

有关 Java 泛型的更多信息,请参阅Java 泛型常见问题解答

于 2012-01-16T19:42:28.560 回答