——每天的寥寥幾筆,堅持下去,將會是乙份沉甸甸的積累。
1.泛型出現的原因:可以使編寫的**得到重用。
不過,要實現**重用,用object的繼承也可以實現,不過用object會出現各種型別轉換的麻煩,因此出現了泛型程式設計。
2.泛型的使用
(1)泛型類
在類名後加一對<>,<>裡面可以放多個形式型別引數,如e,k,v
public class pair
public t getfirst()
public void setfirst(t first)
public t getsecond()
public void setsecond(t second)
}
(2)泛型方法
在方法返回型別和修飾符中間,用<>括起形式型別引數,然後方法的返回型別和引數中都可用到該形式引數
泛型方法可以定義在泛型類中,也可以定義在一般類中
public static t getelement(t obj)
3.術語介紹
引數化型別 list形式型別引數 e
實際型別引數 string
泛型 list原生態(原始)型別raw type list
有限制型別引數 無限制萬用字元型別 <?>
遞迴型別引數 >
有限制萬用字元型別 <? extends number>
泛型方法 static listaslist(e a)
型別令牌 string.class
4.泛型限定的注意點——有限制型別引數
(1):t和boundingtype可以都是類,則t是子類;兩者也可以都是介面,則t是子介面
(2)乙個型別變數或萬用字元可以有多個限定,如,中間用&連線,而且只能有乙個類,可以有多個介面,如果有類存在,必須寫在第乙個。
5.萬用字元的使用
1、無限定萬用字元 形式<?>
2、上邊界限定萬用字元 形式< ? extends number>
3、下邊界限定萬用字元 形式< ? super number>
舉個例子:
public class pair
public pair(t first, t second)
public t getfirst()
public void setfirst(t first)
public t getsecond()
public void setsecond(t second)
public static void main(string args)
}
所以,有如下原則:
當使用get方法時,盡量用上邊界限定萬用字元
當使用set或add方法時,盡量使用下邊界限定萬用字元
6.泛型的子型別,繼承問題
(1)若b extends a,但是list和list沒有繼承關係。不然list強轉成list後可以隨便新增和b無關的其他a的子類,這樣使得轉換後的list中的型別不統一
(2)arraylist可以轉成list,因為arraylist實現了list介面
(3)list也可以轉成list型別,因為list是最高介面
JAVA核心三(泛型)
泛型的主要目的之一就是用來指定容器要持有什麼型別的物件,而且有編譯器來保證型別的正確性 不在執行時才檢查出來 可以暫時不指定型別,而是稍後再決定具體使用什麼型別,可以使用型別引數,用尖括號括住,放在類名後面。然後在使用這個類的時候,再用實際的型別替代此型別引數。t就是型別引數。一 泛型類 在定義乙個...
Java之泛型程式設計
1.概念 泛型就是引數化型別。泛型的好處是在編譯的時候檢查型別安全,並且所有的強制轉換都是自動和隱式的,提高 的重用率。2.案例 1 先看下面案例 不適用泛型程式設計 list li new arraylist 使用泛型程式設計如下 使用泛型的優點 大型應用時能顯著降低程式的複雜度 泛型為較大的優化...
Java之泛型篇
出處 1 泛型的意義 往小處說,是為了實現型別安全的集合 往大處說,是為了實現模版程式設計的理念 2 為什麼要出現泛型 雖然集合具有長度可擴充 插入刪除方便等強大的特性 但是集合內部可以儲存的物件是型別不安全的 釋義 什麼是型別不安全 因為集合內部可以裝入 取出的元素是object型別 因此任何物件...