import java.util.*;
class Test
{
public static class Base
{
}
public static class Derived1
extends Base
{
}
public static class Derived2
extends Base
{
}
public static void main (String[] args)
{
//Example1.
List<? extends Base> e = new ArrayList<Base>();
e.add(new Derived1()); //this won't compile
//Example2.
List<? super Base> b = new ArrayList<Base>();
b.add(new Derived1()); //this compiles
}
}
List<? super Base> b
可以分配为List<Base>
或List<Object>
。一个Derived1
实例可以被添加到两个,这样b.add(new Derived1())
的语句将汇编。
另一方面,List<? extends Base> e
可能会为其分配一个List<Derived2>
,因此编译器不允许向其添加Derived1
实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句