我想这是一个令人困惑的标题,但我不知道还有什么要调用 - 也许在某处回答,但我什么也找不到。拿这个例子:Java泛型:无界通配符泛化不能通过第二级
List<Class<? extends Integer>> myList;
void foo() {
bar(myList);
}
void bar(List<Class<?>> a) { /* ... */ }
它不编译(不适用的参数,它说)。如果我删除的边界,它工作正常:
List<Class<?>> myList;
void foo() {
bar(myList);
}
void bar(List<Class<?>> a) { /* ... */ }
Class<? extends Integer>
只比Class<?>
更具体。它如何停止工作?请注意,此问题仅在第二级泛型中出现。如果没有列表,只需Class<? extends Integer>
和Class<?>
,它也可以。但是当仿制药深入两层或更多层时似乎停止了工作。任何原因/解决方法/等?
不错,它的工作方式!我想最终会产生某种感觉...... – 2014-10-02 09:46:44