【发布时间】:2013-11-07 17:36:59
【问题描述】:
我有一个问题(为了简化):
public void method(List<List<?>> list){...}
调用时给了我一个编译错误:
method(new ArrayList<List<String>>()); // This line gives the error
阅读similar thread后,我明白如果我将方法签名重写为:
public void method(List<? extends List<?>> list){...}
现在,我的问题是,为什么下面的工作那么有效?
public <T> void method(List<List<T>> list){...}
【问题讨论】:
-
@Nambari 这不是真正的重复。
-
@RohitJain:如果需要,我会删除它,但那里接受的答案涵盖了与泛型(AFAIK)相关的所有内容。 OP 在下面发布的答案来自其中一个参考资料。
-
@Nambari 是的,接受的答案确实提供了指向所有关于泛型的优秀教程和参考的链接,但它并没有专门讨论多级通配符,这就是 OP 的情况。跨度>