今天简单梳理一下自己理解的泛型,以便以后查阅。
泛型是JDK1.5引入的新特性,也是最重要的一个特性
泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的
泛型的原理就是“类型的参数化”,即把类型看做参数。
也就是说把所要操作的数据类型看做参数,就像方法的形式参数是运行时传递的值的占位符一样。
简单的说,类型变量扮演的角色就如同一个参数,它提供给编译器用来类型检查的信息
泛型可以提高代码的拓展性和重要性。
总结:所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型变成是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。
泛型的应用场景:是当需要创建多个对象,这些对象的逻辑都一样,但是数据类型不一样,这个时候可以创建一个泛型类。这样就可以避免大量的代码冗余。
举个例子,比如需要一个对象有一个属性,如果这个属性你想得到整型,又想得到字符串。又想得到bool类型,那么最简单的方法当然是创建三个类,然后new两三个对象出来。 或者用强制类型转换,但是强制类型转换有时候也会出错的。
但是用了泛型可以这样做。
public class GenericDemo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个泛型类对象
GenericClass<String> gen1=new GenericClass<String>("chenhao");
System.out.println(gen1.getData());
GenericClass<Integer> gen2=new GenericClass<Integer>(1);
System.out.println(gen11.getData());
}
}
class GenericClass<T>{//创建一个泛型类
private T data;
public Animal(){}
public Animal(T data){
this.data=data;
}
public void setData(T data){
this.data=data;
}
public T getData(){
return data;
}
}
这样只需要定义一个泛型类,既能传入字符串 又能传入整型。 这个结果打印出来的就是 chenhao 1