泛型的简介
1.java引入泛型的好处是安全简单。
2.没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
3.泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
简单的应用。
1.
class People<T>{
private T t;
}
2.这个T相当于Object理解。把变量的类型当成参数,原来是不变的,现在可以随便变,
3.
class People<T,K,L>{
private T t;
private K k;
private L l;
}
泛型的高级应用
1.class GenericsFoo<T extends Collection>
这样的话就会只要求这个类型实现了Collection接口,这里只限制使用extends,不管后面是不是接口.
2.使用通配符
GenericsFoo<? extends Collection> listFoo1 = null;
listFoo=new GenericsFoo<ArrayList>(new ArrayList());
3.静态方法中不能使用泛型。T类型的变量也不能用静态定义。
static T tt =null;//报错
public static void pp(T t){}//报错
public static T ppp(){}//报错