在java的學習過程中,我們可以看到很多很多類似Arraylist<T>這樣的結構出現,那么Arraylist類到底和泛型有什么關系呢?
今天在這里小做總結一下:
1,什么叫“泛型” 具體可參考博客:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
2, 什么時arraylist,具體可以參考:http://blog.csdn.net/jinuxwu/article/details/6771121
這里我是這么總結的:類,對象,方法均可以有一個代表類型的形參,可以用T,E,V等表示。形參顧名思義只是一個形式,一個泛型,沒有具體的實際類型參數。
所以這些用T,E,V等參數模糊代表類型的類,對象,方法。我們就叫做泛型。等到我們傳入具體的實際類型參數(及實參)給這些類,對象方法時。它們就有了指定的類型。(注意我們平常見到的一些package中的類,它們都不是泛型,因為類,對象,方法都有具體的類型)。
舉個例子:下面的ArrayList類就是一個泛型,進去它的實現方法中,我們可以看到
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
private static final long serialVersionUID = 8683452581122892189L;
private transient Object[] elementDat
................
}
E代表形參,表示arraylist是一個泛型。我們不傳入具體的實參時,則可以存儲任何類型的內容到arraylist中eg:ArrayList List = new ArrayList(); (但注意,這樣會導致讀取內容時拋出異常)。
所以我們在使用arraylist時,一般給它指定具體的實際類型eg:ArrayList<String> list = new ArrayList<String>()
