1)泛型是JDK1.5之后引入的新特性,泛型的本质是参数化类型,在类,接口,方法的定义过程中,所操作的数据类型为传入的指定参数类型。所有的集合类型都带有泛型参数,这样在创建集合时,可以指定放入集合的对象类型,同时编译器也会以此类型进行检查。
2)ArrayList支持泛型,泛型<>的符号可以随便写,通常写T,
3)迭代器也支持泛型,但是迭代器使用的泛型应该与它所迭代的集合中的泛型类型一致,
4)泛型只支持引用数据类型,不支持基本数据类型,但可以使用对应的包装类,
5)如果泛型不指定类型的话,默认为Object类型。
List<Point> list = new ArrayList<Point>() ;
list.add(new Point(1,2)) ;
list.add(new Point(3,4)) ;
//list.add("哈哈") ; //定义泛型后,只运行Point类型,否则出异常
for(int i=0;i<list.size();i++){
Point p = list.get(i) ; //不需要(point)强转
System.out.println(p.getUsername()) ;
}
Iteretor<Point> ite =list.iterator();
while(ite.hasNext()){
Point p = ite.next() ;
System.out.println(p) ;
}
自定义泛型
Point p = new Point(1,2) ;//只保存整数
//把Point类的int都改成泛型E,也而已设置多个泛型Point<E,T>
Point<Double> p = new Point(1.1,3.2) ;
Point<Double,Loing> p = new Point(1.2,3L) ; //设置多个泛型