学习笔记09 - java 泛型
泛型generic,jdk5.0中的新特性
泛型在集合中的使用
①集合接口和集合类在jdk5.0时都修改为待泛型的结构
②在实例化集合类时,可以指明具体的泛型类型
③凡是定义类或接口时,内部结构(构造器、方法、属性等)使用到泛型的位置,都为指定的泛型类型
④泛型类型必须是类(基本数据类型no,包装类yes);没有指定时,默认为Object
⑤jdk7类型推断 后面可省略 Map<String,Integer> map = new HashMap<String,Integer >();
自定义泛型
泛型类、泛型接口;泛型方法
泛型类、泛型接口
1.如果定义了泛型类,实例化没有指定泛型类型,默认为Object类型 【建议指定】
pulbic class order<T>{ } order<Integer> ord = new order();
2.子类继承带泛型的父类时,指明了泛型类型;则子类实例化时不需要再指明类型.【子类不是泛型类】
public class subOrder extends order<Integer> { } subOrder sub1 = new subOrder();
3.子类继承带泛型的父类时,没有指明泛型类型;子类实例化时指明【子类是泛型类】
public class subOrder<T> extends order<T> { } subOrder<String> sub2 = new subOrder();
补充:子类除了指定或保留(部分保留、全部保留)父类的泛型,还可以增加自己的泛型
`public class son<T1,A,B> extends father<String,T1,T2>{ }`
【其中子类已经指明String,同2.】
4.声明构造器 public order(){}
5.泛型不同的引用不能相互赋值
6.在泛型类或接口中的静态方法中,不能使用类的泛型 【生命周期】
7.异常类不能是泛型的
8.数组 T[] arr = new T[10]; //编译不通过 T[] arr = (T[]) new Object[10]; //可以, 数组中元素需要是T类型或子类的对象
泛型方法
public static <E> void method(E[] arr){ } order.method(new String[10]);
泛型方法与类是否为泛型类没有关系;方法泛型参数与类的泛型参数没有关系
泛型方法可以是静态的,泛型参数是在调用方法时确定的 【区别于上述6.】
泛型在继承方面的体现
通配符 ?
下一篇:
在matlab中添加路径和删除路径