使用此代替:
1 public List<? extends Foo> getFoos()2 {3 List<Foo> foos = new ArrayList<Foo>(); 4 foos.add(new SubFoo());5 return foos;6 }一旦将foos声明为
List<? extendsFoo>,编译器就不知道添加SubFoo是安全的。如果
ArrayList<AltFoo>已将分配给
foos怎么办?那将是一个有效的分配,但是添加一个SubFoo会污染该集合。



