1、泛型的概念及做用安全
一、泛型的概念this
Java中的泛型是Java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操做的數據類型被指定爲一個參數。spa
這種參數類型能夠用在類、接口和方法的建立中,分別稱爲泛型類、泛型接口、泛型方法。 對象
Java語言引入泛型的好處是安全簡單。接口
例如:get
Class ArrayList<E>:聲明一個泛型類ArrayList,其中E可使用任意一個具體類型替代,泛型類型每每使用一個大寫字母表示。編譯
Public boolean add(E o):E是泛型,也就是說,使用add方法時,能夠爲其傳遞任意一種類型的參數。其中此處的E是在類中定義的。class
二、泛型的做用泛型
Java中泛型的做用:簡單安全變量
在編譯的時候檢查類型安全,而且全部的強制轉換都是自動和隱式的,提升代碼的重用率;
消除代碼中的強制類型轉換,同時得到一個附加的類型檢查層,該檢查層能夠防止有人將錯誤類型的值保存在集合中。
2、泛型類
聲明類名後使用<E>(E能夠是任何其餘字母),便可以指定該類是一個泛型類;
類型參數能夠在該類中須要數據類型的地方使用,如屬性聲明、方法聲明等。
例如:
public class Poot<E> {
private E ota;
public Poot(){
}
public E getOta() {
return ota;
}
public void setOta(E ota) {
this.ota = ota;
}
3、泛型方法
全部泛型方法聲明都有一個類型參數聲明部分(由尖括號分隔),該類型參數聲明部分在方法返回類型以前(在下面例子中的<E>);
例如:
public <E> E getX(E x){
return x;
}
每個類型參數聲明部分包含一個或多個類型參數,參數間用逗號隔開。一個泛型參數,也被稱爲一個類型變量,是用於指定一個泛型類型名稱的標識符;
類型參數能被用來聲明返回值類型,而且能做爲泛型方法獲得的實際參數類型的佔位符;
泛型方法體的聲明和其餘方法同樣。注意類型參數只能表明引用型類型,不能是原始類型(像int,double,char的等)。
注意:是否擁有泛型方法,與其所在的類是否泛型沒有關係。要定義泛型方法,只需將泛型參數列表置於返回值前。
4、泛型接口
泛型接口,與泛型類徹底相同
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> {
...
}