JAVA复习之泛型
2011-12-20 12:08
260 查看
常规用法:
1.定义泛型类时声明多个类型;
class MutiOverClass<T1,T2>
2.定义泛型时声明数组类型:
注意,可以在使用泛型机制是声明数组,但是不可以使用泛型来建立数组实例;
例如,//private T[] array=new T[10];是不允许的。
高级用法:
1.限制泛型可用类型。
class LimitClass<T extends Anyclass>,即T只可以是Anyclass的子类,或者实现了Anyclass接口;
class LimitClass<T super Anyclass>, 即T只可以是Anyclass接口或者Anyclass的父类;
2.通配符。
泛型类型名<?extends List>
注意:(1)List与List<?>的区别,使用通配符声明的名称实例化的对象不能对其加入新的信息,只能获取或删除。
(2)
注意对比上面两段代码,第二段代码是错误的,错误原因:The method sum(List<Object>) in the type Test is not applicable for the arguments (List<Number>)
虽然Number继承了Object但是List<Number>与List<Object>并没有继承关系,所以不存在所谓的向上转型。
1.定义泛型类时声明多个类型;
class MutiOverClass<T1,T2>
2.定义泛型时声明数组类型:
class ArrayClass<T>{ private T[] array; //..... }
注意,可以在使用泛型机制是声明数组,但是不可以使用泛型来建立数组实例;
例如,//private T[] array=new T[10];是不允许的。
高级用法:
1.限制泛型可用类型。
class LimitClass<T extends Anyclass>,即T只可以是Anyclass的子类,或者实现了Anyclass接口;
class LimitClass<T super Anyclass>, 即T只可以是Anyclass接口或者Anyclass的父类;
2.通配符。
泛型类型名<?extends List>
注意:(1)List与List<?>的区别,使用通配符声明的名称实例化的对象不能对其加入新的信息,只能获取或删除。
(2)
package test; import java.util.*; public class Test { /** * @param args */ public double sum(List<?extends Object>list){ double result=0.0; for(int i=0;i<list.size();i++){ Object n=list.get(i); double values=((Number)n).doubleValue(); result+=values; } return result; } public static void main(String[] args) { // TODO Auto-generated method stub Test a=new Test(); List<Number> list=new ArrayList<Number>(); for(int i=0;i<10;i++) list.add(i); double result=a.sum(list); System.out.println(result); } }
public class Test { /** * @param args */ public double sum(List<Object>list){ double result=0.0; for(int i=0;i<list.size();i++){ Object n=list.get(i); double values=((Number)n).doubleValue(); result+=values; } return result; } public static void main(String[] args) { // TODO Auto-generated method stub Test a=new Test(); List<Number> list=new ArrayList<Number>(); for(int i=0;i<10;i++) list.add(i); double result=a.sum(list); System.out.println(result); } }
注意对比上面两段代码,第二段代码是错误的,错误原因:The method sum(List<Object>) in the type Test is not applicable for the arguments (List<Number>)
虽然Number继承了Object但是List<Number>与List<Object>并没有继承关系,所以不存在所谓的向上转型。
相关文章推荐
- java 泛型复习
- 黑马程序员--java基础复习之泛型
- java再复习——自定义泛型方法
- JAVA基础复习(三)泛型的使用
- Java复习笔记+经验总结-06 多线程 泛型 反射
- java基础复习(集合、泛型、IO流、多线程、Junit 、内省 、Properties、 路径问题)
- JAVA基础复习十六-LinkedList、栈和队列数据类型、泛型、增强for循环、可变参数、Arrays工具类
- Java复习笔记—泛型
- Java复习笔记(9)——泛型
- java再复习——泛型
- Java基础复习:泛型
- 小码哥杯java程序比赛复习(十二)集合和泛型(上)
- 小码哥杯java程序比赛复习(十三)集合和泛型(中)
- java再复习——泛型的通配符与扩展
- 复习(数据结构:java):线性表(数组):泛型的写法
- 黑马程序员——java复习总结——泛型和Map
- Java复习之泛型
- 黑马程序员--JAVA基础复习之泛型
- java再复习——通过反射获取到方法的参数和返回值的泛型类型
- Java复习笔记---泛型