对于泛型的自动匹配的一个问题,可能你也会碰到的
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的子类,但不确定是什么类的实例,编译器不让您加入信息,理由是,如果可以加入信息的話,那么您就得記得取回的实例是什么类型,然后转换为原來的类型方可进行操作,这就失去了使用泛型的意义。
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的子类,但不确定是什么类的实例,编译器不让您加入信息,理由是,如果可以加入信息的話,那么您就得記得取回的实例是什么类型,然后转换为原來的类型方可进行操作,这就失去了使用泛型的意义。
相关文章推荐
- 碰到一个基本输入输出流的问题,以及对于getline使用总结。
- 请教一个问题,有可能是和泛型有关,
- 基于自组网技术的智能无线抄表方案 现代生活中,水表、电表和煤气表的抄录和收费,是城市生活的一个大问题。人工入室抄表,扰民不说,还可能给居民带来不安全因素;对于各职能公司来说,派人上门抄表也无形中耗费了大量人力资源和时间。近年来,信息化社会在逐 步改变人们的
- 领域建模有很多种方法,对于同样的问题域使用不同的建模手段得到的模型可能也不尽相同。于是我经常听到这样一个问题:怎么才能保证建模的正确性?
- WCF IIS 用户名消息安全 可能碰到的问题
- VS2010 使用过程中碰到的一个DLL导入失败的问题
- 对于多线程编程例程3的一个问题分解
- 使用Maven 编译 storm 源码可能碰到下载依赖jar 的问题
- MySQL ODBC connector 在windows下自动安装的一个问题
- Fastjson反序列化泛型类型时候的一个问题
- 用Django开发一个Blog可能需要解决的22个问题
- 今天碰到一个强数据类型集的问题,不知道大家怎么解决呢????
- EJS前端版的一个小问题,可能是bug.
- Linux shell中的一个问题 ${}带正则匹配的表达式
- Dao 泛型设计碰到的问题和一些心得。
- 请使劲回答一个关于UNIX/Linux自动扩展stack的问题
- spring初次搭建碰到问题 Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 7; 不允许有匹配 "[xX
- 不知为何,最近碰到一个问题在上传.mdb,.bak,.exl,.iso等文件时会很慢,或不成功。
- 基于安卓开发后嵌入一个html5开发的项目碰到的问题
- 问题"trouble processing "一个可能的解决方法