您的位置:首页 > 其它

对于泛型的自动匹配的一个问题,可能你也会碰到的

2008-02-22 12:00 429 查看
以下是源代码:
package com.zz.jdk5;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class CommonGeneric<T> {
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public static void main(String[] args) {
CommonGeneric<? extends List> commonGeneric =new CommonGeneric<List>();
commonGeneric = new CommonGeneric<ArrayList>();
ArrayList al = new ArrayList();
//下面就是错误产生行
//commonGeneric.setT(al);

commonGeneric = new CommonGeneric<LinkedList>();
LinkedList ll = new LinkedList();
}
}

问题解释:
使用<?>或是<? extends SomeClass>的声明方式,意味著您只能通过该名称來*取得*所参考实例的信息,或者是*移除*某些信息,但不能*增加*它的信息,因为只知道当中放置的是SomeClass的子类,但不确定是什么类的实例,编译器不让您加入信息,理由是,如果可以加入信息的話,那么您就得記得取回的实例是什么类型,然后转换为原來的类型方可进行操作,这就失去了使用泛型的意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐