[code=java]public void add(List<? extends String> list){
list.add("xyz");
}[/code]这个代码我们不知道这个受限制的通配符的具体类型是什么 ,所以我们不能把xyz添加进去
我们看一下List接口源代码:[code=java]//定义接口时候指定了一个类型形参,该形参名为E
public interface List<E>
{
//在该接口里面,E可以作为类型使用
//下面方法可以使用E昨晚参数类型
void add(E x) ;
}[/code]从上面可以看出add方法有类型参数E作为集合的元素类型,所以我们传给add的参数必须是E类的对象或者其子类的对象--注意是在使用的时候传进去才知道是什么类型,但是因为在这个例子中现在还不知道是什么类型,我们只知道它的上限是String类型,所以程序依然无法将任何的对象“丢进”集合。但是null例外,因为他是所有引用类型的实例
可以考虑这样[code=java]public <T> void add(List<? extends T> list){
}[/code]
[ 本帖最后由 詹季春 于 2011-08-05 08:58 编辑 ] |