數據類型之----泛型

數據類型之----泛型

泛型

泛型:可以在類或方法中預支地使用未知的類型。

一般在創建對象時,將未知的類型確定具體的類型。當沒有指定泛型時,默認類型為Object類型。

使用泛型的好處

<1>將運行時期的ClassCastException,轉移到了編譯時期變成了編譯失敗。

<2>避免了類型強轉的麻煩。

數據類型之----泛型

泛型是數據類型的一部分,我們將類名與泛型合併一起看做數據類型。

泛型的定義與使用

我們在集合中會大量使用到泛型,這裡來完整地學習泛型知識。

泛型,用來靈活地將數據類型應用到不同的類、方法、接口當中。將數據類型作為參數進行傳遞。

定義和使用含有泛型的類

定義格式:

修飾符 class 類名 { }

例如,API中的ArrayList集合:

泛型在定義的時候不具體,使用的時候才變得具體。在使用的時候確定泛型的具體數據類型。

class ArrayList{
public boolean add(E e){ }
public E get(int index){ }
....
}

使用泛型: 即什麼時候確定泛型。

在創建對象的時候確定泛型

例如, ArrayList<string> list = new ArrayList<string>();/<string>/<string>

此時,變量E的值就是String類型,那麼我們的類型就可以理解為:

class ArrayList<string>{
public boolean add(String e){ }
public String get(int index){ }
...
}
/<string>

再例如, ArrayList<integer> list = new ArrayList<integer>();/<integer>/<integer>

此時,變量E的值就是Integer類型,那麼我們的類型就可以理解為:

class ArrayList<integer> {
public boolean add(Integer e) { }
public Integer get(int index) { }
...
}
/<integer>

含有泛型的方法

定義格式:

修飾符  返回值類型 方法名(參數){ }
數據類型之----泛型

數據類型之----泛型

含有泛型的接口

定義格式:

修飾符 interface接口名 { }
數據類型之----泛型

定義類時確定泛型的類型

數據類型之----泛型

此時,泛型E的值就是String類型。

始終不確定泛型的類型,直到創建對象時,確定泛型的類型

數據類型之----泛型

數據類型之----泛型

泛型通配符

泛型通配符

當使用泛型類或者接口時,傳遞的數據中,泛型類型不確定,可以通過通配符>表示。但是一旦使用泛型的通配符後,只能使用Object類中的共性方法,集合中元素自身方法無法使用。

通配符基本使用

泛型的通配符:不知道使用什麼類型來接收的時候,此時可以使用?,?表示未知通配符。

此時只能接受數據,不能往該集合中存儲數據。

數據類型之----泛型

泛型不存在繼承關係 Collection list = new ArrayList();這種是錯誤的。

通配符高級使用----受限泛型

之前設置泛型的時候,實際上是可以任意設置的,只要是類就可以設置。但是在JAVA的泛型中可以指定一個泛型的上限和下限。

數據類型之----泛型


分享到:


相關文章: