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;
}