首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

泛型

2012-10-28 
泛型-?泛型:JDK1.5版本出现的一个安全机制。好处:将运行时出现的问题(ClassCastException)转移到了编译时期

泛型-

?

泛型:JDK1.5版本出现的一个安全机制。好处:将运行时出现的问题(ClassCastException)转移到了编译时期。      避免了强转的麻烦。格式:通过<>在内指定操作的引用数据类型。泛型可以定义在类上。早期:class Tool{private Object obj;public void setObj(Object obj){this.obj = obj;}public Object getObj(){return obj;}}main(){Tool t = new Tool();t.setObj(new Worker());//当往里传递的参数为t.setObject(new Student());//编译通过,运行出现ClassCastExceptionWorker w = (Worker)t.getObj();//必须要强转}现在:通过泛型类来完成。class Tool<Q>{private Q obj;public void setObj(Q obj){this.obj = obj;}public Q getObj(){return obj;}}main(){Tool<Worker> t = new Tool<Worker>();t.setObject(new Worker());//如果传入t.setObject(new Student());编译时会出现失败。//那么就是将运行时出现的问题转移到了编译时期。Worker w = t.getObj();//不需要在进行强转。}什么时候定义泛型类呢?当类中要操作的引用数据类型不确定的时候,就使用泛型类。在使用泛型类时,只有在建立泛型类对象时,才可以指定具体要操作的引用数据类型。那么该对象在调用方法时,操作的类型都是相同的。如果想方法在调用的时,操作的类型不确定,而且不相同,可以将泛型定义在方法上。class Utils{public <T> void printInfo(T t){}public <Q> void show(Q q){}}泛型的限定:1,? extends E: 接收的是E类型对象或者E的子类型对象。2,? super E:接收的是E类型对象或者E的超类,直至Object对象
1 楼 ricoyu 2011-10-23   引用? super E:接收的是E类型对象
应该是: ? super E:接收的是E类型对象或者E的超类,直至Object对象

热点排行