1.泛型的作用:
在泛型出现之前,集合存放的元素一定要指定具体的类型,限制了!jdk5.0以后,一般把运行时可能出现的异常提前到编译时。
在jdk5.0之前:
ArrayList list = new ArrayList();
list.add(new Cat());
list.add(new Dog());
Cat cat = (Cat)list.get(0);
Cat cat2 = list.get(1); //有问题!!类型转换异常(ClassCastException),运行时异常!
----------------------------------------------------------------------------
在jdk5.0以后
ArrayList<Cat> list = new ArrayList<Cat>();
list.add(new Cat());//OK
list.add(new Dog()); //有问题!在编译时报错
2.泛型类
格式:
class 类名<自定义的泛型类>{
}
注意:
1)在创建泛型类的类对象的时候,自定义泛型类的类型就确定!
2)在创建泛型类的类对象时可以指定自定义泛型类,默认为Object类型
实例:ArrayList<E> 就是一个泛型类
3.泛型方法
第一种: 使用泛型类的类型的泛型方法
格式:
class Demo<T>{
public void method1(T t){ //泛型方法
}
}
注意:
1)在创建泛型类对象的时候,泛型方法的泛型类型就确定了
实例: ArrayList 类 上的 add(E e)方法就是这样的方法
第二种:使用自定义泛型的泛型方法
实例:Arrays 类的 asList(T ...)就是一个自定义泛型的泛型方法!
两种方法都存在的实例:
ArrayList是一个泛型类, 里面的add()方法是使用泛型类上的泛型方法,
toArray() 方法是一个自定义的泛型方法
4.泛型接口
格式:
interface A<T>{
}
注意:在创建泛型接口的实现类的类对象时,泛型接口的类型确定
实例:Collection 、 Map 都是泛型接口