Java - Enumerable.Cast()喜欢C#?

Sar*_*els 3 java generics casting java-5

Java 1.5中是否存在Enumerable.Cast()与C#相同的内容?我想为ArrayList<MyType>声明为的变量赋值List<Object>.Eclipse抱怨"类型不匹配:无法转换ArrayList<MyType>List<Object>".我只是使用ListArrayList没有泛型,但编译器警告这一点,我想清理一些警告.

Jon*_*eet 7

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

ArrayList<MyType> specificList = new ArrayList<MyType>();
List<? extends Object> generalList = specificList;
Run Code Online (Sandbox Code Playgroud)

或者更接近Enumerable.Cast将使用Iterable:

Iterable<? extends Object> generalIterable = specificList;
Run Code Online (Sandbox Code Playgroud)

遗憾的是你甚至需要在这里指定通配符(我很惊讶你这样做),因为这Iterable是一个"只读"接口.

有关Java泛型的更多信息,请参阅Java Generics FAQ.