JAVA泛型类

泛型是JDK 5.0后出现新概念,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

泛型类引入的好处不仅在于减少代码量,还在于一提供了编译时期数据类型的检查功能,可以提前预知错误的发生,增加代码安全性,二是减少了强制类型转换。下面定义一个泛型类

 Example GenericFX.java

 package org;

 public class GenericFX<E>

{

     private E fx;

    

     public void setFX(E fx)

    {

         this.fx = fx;

    }

 

     public E getFX()

     {

         return fx;

     }

}

在此例中,GenericFX类就是要定义的泛型类,类型变量E是泛型类的类型参数,我们可以使用GenericFX<E>这样的类型名来声明一个泛型类。如

GenericFX<E>  fx  = new GenericFX<E>(),其中E就是具体的类型, 下面看一个应用泛型类的例子.

 Example GenericFXDemo.java

 package org;

 public class GenericFXDemo

{

     public void main(String[] args)

     {

         GenericFX<Integer>  f1 = new GenericFX<Integer>(); 

         GenericFX<Boolean>  f2 = new GenericFX<Boolean>();      

        

         f1.setFX(new Integer(10));

         System.out.println(f1.getFX());//

       

         f2.setFX(new Boolean(true));

         System.out.println(f2.getFX());//

     }

}

可以看到,f1,f2都是同一泛型类的对象引用,在取得不同参数类型对象时,已不需要实行类型转换.

如果像这样修改一下代码,放进去Integer,取出来Boolean是不允许这样的!!!

f1.setFX(new Integer(10));

Boolean  b = f1.getFX();

System.out.println(b);   这里编译就会报错,告诉你这不安全.

泛型类可以定义多个类型参数,像GenericFX<E,F>就要两个类型参数。但是,无论有多少个类型参数,泛型仍然只需要一个类。如上GenericFX<Integer> GenericFX<Boolean>都属于同一个泛型类GenericFX,f1,f2都只是该泛型类的一个应用,当然单一的GenericFX类是不能称为泛型类的,必须要有<>和类型参数才可以,而像fx只是泛型类的成员变量。

posted @ 2014-04-26 10:35  baoendemao  阅读(782)  评论(0编辑  收藏  举报