泛型是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都是同一泛型類的對象引用,在取得不同參數類型對象時,已不需要實行類型轉換.
如果像這樣修改一下代碼,
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只是泛型類的成員變量。