Java語言中的泛型
一、泛型的概念及作用
1、泛型的概念
Java中的泛型是Java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。
這種參數類型可以用在類、接口和方法的創建中,分別稱為泛型類、泛型接口、泛型方法。
Java語言引入泛型的好處是安全簡單。
例如:
Class ArrayList<E>:聲明一個泛型類ArrayList,其中E可以使用任意一個具體類型替代,泛型類型往往使用一個大寫字母表示。
Public boolean add(E o):E是泛型,也就是說,使用add方法時,可以為其傳遞任意一種類型的參數。其中此處的E
2、泛型的作用
Java中泛型的作用:簡單安全
在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率;
消除代碼中的強制類型轉換,同時獲得一個附加的類型檢查層,該檢查層可以防止有人將錯誤類型的值保存在集合中。
二、泛型類
聲明類名後使用<E>(E可以是任何其他字母),即可以指定該類是一個泛型類;
類型參數可以在該類中需要數據類型的地方使用,如屬性聲明、方法聲明等。
例如:
public class Poot<E> {
private E ota;
public Poot(){
}
public E getOta() {
return ota;
}
public void setOta(E ota) {
this.ota = ota;
}
三、泛型方法
所有泛型方法聲明都有一個類型參數聲明部分(由尖括號分隔),該類型參數聲明部分在方法返回類型之前(在下面例子中的<E>);
例如:
public <E> E getX(E x){
return x;
}
每一個類型參數聲明部分包含一個或多個類型參數,參數間用逗號隔開。一個泛型參數,也被稱為一個類型變量,是用於指定一個泛型類型名稱的標識符;
類型參數能被用來聲明返回值類型,並且能作為泛型方法得到的實際參數類型的占位符;
泛型方法體的聲明和其他方法一樣。註意類型參數只能代表引用型類型,不能是原始類型(像int,double,char的等)。
註意:是否擁有泛型方法,與其所在的類是否泛型沒有關系。要定義泛型方法,只需將泛型參數列表置於返回值前。
四、泛型接口
泛型接口,與泛型類完全相同
Public interface TestGenerics<T> {
Public T getT(T t);
Public String assume(T t);
}
Comparable接口是泛型接口
public interface Comparable<T> {
public boolean compareTo(T other);
}
Comparable 接口包含一個類型參數 T,該參數是一個實現 Comparable 的類可以與之比較的對象的類型。這意味著如果定義一個實現 Comparable 的類,比如 String,要聲明它可與什麽比較(通常是與它本身比較)。
public class String implements Comparable<String> {
...
}
Java語言中的泛型