------- android培训、java培训、期待与您交流! ----------
1、 为了解决类型安全的集合问题引入了泛型。泛型是一个编译时语法。
2、 List<String> l = new ArrayList<String>();
<String>:表示该集合中只能存放String类型对象。
3、 使用了泛型技术的集合在编译时会有类型检查,不再需要强制类型转换。String str = l.get(2);
注:一个集合所允许的类型就是这个泛型的类型或这个泛型的子类型。
4、 List<Object> l = new ArrayList<Integer>×
必须类型一致,泛型没有多态
5、 泛型的通配符<?>
泛型的通配符表示该集合可以存放任意类型的对象。
static void print( Cllection<?> c ){
for( Object o : c )
out.println(o);
}
6、 带范围的泛型通配符
(1)、向下匹配:<? extends Number>
表示该集合元素可以为Number类型及其子类型(包括接口)
(2)、向上匹配:<? super Number>
表示该集合元素可以为Number类型及其父类型
7、 泛型方法
在返回值与修饰符之间可以定义一个泛型方法
public static <T,E extends T> void copy (T[] array,Stack<E> sta){…..}
8、 不能使用泛型的情况:
(1)、泛型不能用于线程
(2)、不能用泛型来new一个对象
如:T t = new T();
(3)、静态方法不能使用类的泛型。
9、 在使用接口的时候指明泛型。
class Student implements Comparable<Student>{.......}
注意:在对泛型类型进行参数化时,类型参数的实例必须是引用类型,不能是基本类型。当一个变量被声明为泛型时,
只能被实例变量、方法和内部类调用,而不能被静态变量和静态方法调用。因为静态成员是被所有参数化的类所共享的,
所以静态成员不应该有类级别的类型参数。
------- android培训、java培训、期待与您交流! ----------
详细请查看:http://edu.csdn.net/heima/