泛型:
jdk1.5出现的安全机制。
好处:
1、将运行时期的问题ClassCastException转到了编译时期。
2、避免了强制转换的麻烦。
<>:什么时候用?当操作的引用数据类型不确定的时候,就使用<>,将要操作的引用数据类型传入即可,其实<>就是一个用来接收具体应用数据类型的参数范围。
泛型技术是给编译器使用的技术,用于编译时期,确保了类型的安全。
运行时会将泛型去掉,生成的class文件中时不带泛型的这个称为泛型的擦除。
为什么擦除呢?因为为了兼容运行的类加载器。
泛型的补偿:在运行时,通过获取元素的类型进行转换动作,不用使用者在强制转换。
例:
public static void main(String[] args){
ArrayList<String> al = new ArrayList<String>();
al.add("abc");
Iterator<String> it = al.iterator();
while(it.hasNext()){
String str = it.next();
}
}
自定义泛型类:
在jdk1.5之后,使用泛型来接受类中要操作的引用数据类型。
什么时候使用? 当类中的操作的引用数据类型不确定的时候,就使用泛型类来标识。
例:
public class Tool<Obj>{
private Obj obj;
public Obj getObj(){
return this.obj
}
}
jdk1.5出现的安全机制。
好处:
1、将运行时期的问题ClassCastException转到了编译时期。
2、避免了强制转换的麻烦。
<>:什么时候用?当操作的引用数据类型不确定的时候,就使用<>,将要操作的引用数据类型传入即可,其实<>就是一个用来接收具体应用数据类型的参数范围。
泛型技术是给编译器使用的技术,用于编译时期,确保了类型的安全。
运行时会将泛型去掉,生成的class文件中时不带泛型的这个称为泛型的擦除。
为什么擦除呢?因为为了兼容运行的类加载器。
泛型的补偿:在运行时,通过获取元素的类型进行转换动作,不用使用者在强制转换。
例:
public static void main(String[] args){
ArrayList<String> al = new ArrayList<String>();
al.add("abc");
Iterator<String> it = al.iterator();
while(it.hasNext()){
String str = it.next();
}
}
自定义泛型类:
在jdk1.5之后,使用泛型来接受类中要操作的引用数据类型。
什么时候使用? 当类中的操作的引用数据类型不确定的时候,就使用泛型类来标识。
例:
public class Tool<Obj>{
private Obj obj;
public Obj getObj(){
return this.obj
}
}