日期:2014-05-20  浏览次数:20687 次

list泛型問題
	public void takeList(List<? extends String> list) {
list.add("aaa");
}

第二行報錯
The method add(capture#1-of ? extends String) in the type List<capture#1-of ? extends String> is not applicable for the arguments (String)

這是爲什麽?

------解决方案--------------------
SubFrame sf = new SubFrame();
public void takeList(List<? extends JFrame> list) {
        list.add(sf)
}
class SubFrame extends JFrame {

}
JFrame不是final的,但上面也是错误的
List<? extends T>不是继承于T的所有类的集合,
而是T的某一种子类,是不确定的一种,T可以放进去,但是其子类就不一定了,这个List<? extends T>
根本就不能用add方法
而List<? super T>,是T类的超类,T可以放进去,那么T的超类肯定都可以放进去,这个可以用add方法