我刚看过有关通用外卡的话题。 SCJP 6书中的“?”,“扩展”和“超级”。我的问题与使用super和extends的方法声明有关。
class A {
}
class B extends A {
}
class C extends B {
}
class D extends C {
}
public class Class_1 {
public static void main(String args[])
{
List<B> bs = new ArrayList<B>();
List<A> as = new ArrayList<A>();
List<C> cs = new ArrayList<C>();
List<D> ds = new ArrayList<D>();
Class_1 class_1 = new Class_1();
class_1.getName3(ds);
class_1.getName4(bs);
class_1.getName1(cs);
class_1.getName2(as);
}
public void getName3(List<? extends B> list)
{
}
public void getName4(List<? super B> list)
{
}
public <T extends B> void getName1(List<T> list)
{
}
public <T super B> void getName2(List<T> list)
{
}
}
我在class_1.getName2(as);收到编译错误。为什么?错误是说
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method getName2(List<T>) from the type Class_1 refers to the missing type T
at com.ksh.scjp.gNc.Class_1.main(Class_1.java:26)