您应该将方法重新定义为
private static List<? extends SomeInterface> createList(int n) { ...同样,其他列表声明。 只要您从 通用列表中 读取值,就可以 多态处理通用列表。
(如果要向列表中添加新元素,则应使用
List<? super SomeInterface>。)
这个成语被缩写为 PECS - Producer:Extends / Consumer:Super ,由Josh Bloch在有效Java
2nd Edition,项目28中创造。
正如其他人指出的那样,因为a 并不是* a ,所以即使List<SomeClass>
是,也需要这种习语。所引用文件中对此原因进行了详细说明。
*
List<SomeInterface>``SomeClass implements SomeInterface



