Generic Wild Card' Super'

时间:2015-02-09 09:05:16

标签: java generics inheritance wildcard

我刚看过有关通用外卡的话题。 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) 

0 个答案:

没有答案