Java 如何使用列表<;Sub>;作为列表返回<;超级>;
我有一个返回Java 如何使用列表<;Sub>;作为列表返回<;超级>;,java,generics,Java,Generics,我有一个返回List的方法。 说 List myMethod() 调用该方法时,我想将返回的列表强制转换为list,知道它的运行时类型将是list的Sub 我知道List subs=(List)myMethod()不会工作,因为泛型是不变的 但是,List最短版本是: List<Sub> subs = (List) myMethod(); 如果你使用泛型&列出我们的等式-当你有没有显式强制转换的“Super”对象时,你能调用“mySubMethod”吗?我想这就是你想要的短版本是L
List
的方法。
说
List myMethod()代码>
调用该方法时,我想将返回的列表强制转换为list
,知道它的运行时类型将是list
的Sub
我知道List subs=(List)myMethod()
不会工作,因为泛型是不变的
但是,List最短版本是:
List<Sub> subs = (List) myMethod();
如果你使用泛型&列出我们的等式-当你有没有显式强制转换的“Super”对象时,你能调用“mySubMethod”吗?我想这就是你想要的短版本是List subs=(List)(List)myMethod()代码>。非常感谢@msandiford非常感谢。这是一颗珍珠。
<T extends Super> List<T> myMethod(final Class<T> clazz) {
final List<T> ret = Collections.checkedList(new ArrayList<T>(), clazz);
// ... add elements to ret ...
return ret;
}