java 泛型
1.是什么
是jdk1.5 出现的安全机制,能提高代码的健壮性。
泛型是提供编译时的安全检查,是给编译器用的,编译生成的class文件中泛型将会去掉(泛型的擦除),也就是说运行时没有泛型,擦除之后会有jdk补偿机制,根据元素获取元素的类型,然后进行转换。
擦除的原因是兼容以前的类加载器。
2.好处
1.将运行时的问题转到了编译时暴露
2.避免了代码类型强制转换的麻烦
3.什么时候用泛型
1.当操作的引用数据类型不确定时
2.用于接收具体引用数据类型的参数范围
4.泛型使用实例:
1.泛型接口的定义和使用
interface Show<T,U>{
void show(T t,U u);
}
class ShowTest implements Show<String,Date>
{
public void show(String str,Date date)
{
System.out.println(str);
System.out.println(date);
}
}
2.泛型方法的定义和使用
public static void main(String[] args) throws ClassNotFoundException {
String str=get("Hello", "World");
System.out.println(str);
}
public static <T, U> T get(T t, U u)
{
if (u != null)
return t;
else
return null;
}
3.为泛型变量添加类型限定
public static <T extends Comparable> T get(T t1,T t2) { //添加类型限定
if(t1.compareTo(t2)>=0);
return t1;
}
类型限定在泛型类、泛型接口和泛型方法中都可以使用,不过要注意下面几点:
1、不管该限定是类还是接口,统一都使用关键字 extends
2、可以使用&符号给出多个限定,比如 public static <T extends Comparable&Serializable> T get(T t1,T t2)