什么是Java泛型


什么是泛型呢?

我们首先写一个最简单的泛型类来说明:

  1. public class Generics<T> { //T是type的简称,可以使用任何名称代替   
  2.     private T o; //泛型成员变量   
  3.     public Generics(T o){  
  4.         this.o=o;  
  5.     }  
  6.     public T getObject() {  
  7.         return o;  
  8.     }  
  9.     public void setObject(T o) {  
  10.         this.o = o;  
  11.     }  
  12.     public String getType() {  
  13.         return o.getClass().getName();  
  14.     }  
  15. }  

这个泛型类包括自己的构造函数,以及get、set方法和一个getType方法。

我们可以这样使用这个类:

  1. public class GenericsDemo{  
  2.     public static void main(String[] args){  
  3.           
  4.         Generics<Integer> intObject=new Generics<Integer>(1);  
  5.         System.out.println("the value of intObject is " + intObject.getObject());  
  6.         System.out.println("the type of intObject  is " + intObject.getType());  
  7.   
  8.         Generics<String> stringObject=new Generics<String>("hi, generics!");  
  9.         System.out.println("the value of stringObjectis " + stringObject.getObject());  
  10.         System.out.println("the type of stringObjectis " + stringObject.getType());  
  11.     }  
  12. }  
我们可以使用这个泛型类的各种类类型的版本(如例子中的Integer, String, 以及所有Object类及其子类)。不过泛型并不支持基本数据类型。

很明显,使用java泛型,我们可以省掉强制类型转换。编译器会保留参数的类型信息,执行类型检查,执行类型转换操作。因此开发人员不需要自己确保类型转换的安全性,而把这个交给编译器去做。

相关内容