一、泛型(generics):
1.所謂泛型:就是變數型別的引數化。
類別定義時的邏輯完全一樣,只是裡面成員變數的型別不同 (如果需要多個相似的類,需要定義多個檔案,不同的只是變數的類別,而邏輯是完全一樣的)
如果使用泛型,只要**在編譯時沒有出現警告,就不會遇到執行時classcastexception (型別轉換異常)
泛型的定義:在類名後面加
代表變數的型別可以是任意的
可以使用任何的型別來例項化泛型型別中的型別
public class genericfoo
public t getfoo() }
新建該型別的物件時,若要傳遞的值型別不確定則應這樣建立。
genericfoo<? extends list> ge = null;
ge = new genericfoo();
ge = new genericfoo();
ge 可以指向list的子類
genericfoo<? super list> ge = null;
ge = new genericfoo();
ge 可以指向list的父類
2.for-each迴圈的加入簡化了集合的遍歷
•其語法如下
–for(type element : array)
當遍歷集合或陣列時,如果需要訪問集合或陣列的下標,那麼最好使用舊式的方式來實現迴圈或遍歷,而不要使用增強的for迴圈,因為它丟失了下標資訊。
3.自動裝箱/拆箱大大方便了基本型別資料和它們包裝類的使用。
自動裝箱:基本型別自動轉為包裝類。(int〉〉integer)
自動拆箱:包裝類自動轉為基本型別。(integeer〉〉int)
4。可變引數:
可變引數本質上就是乙個陣列,對於某個宣告了可變引數的方法來說,我們既可以傳遞離散的值,也可以傳遞陣列物件。但如果將方法中的引數定義為陣列,那麼只能傳遞陣列物件而不能傳遞離散的值。
可變引數必須要作為方法引數的最後乙個引數,即乙個方法不可能具有兩個或兩個以上的可變引數。
5.列舉(enum):
定義乙個列舉型別:
public enum color
使用:color mycolor = color.red;
而每個列舉的成員其實就是您定義的列舉型別的乙個例項(instance)。換句話說,當定義了乙個列舉型別後,在編譯時刻就能確定該列舉型別有幾個例項,分別是什麼。在執行期間我們無法再使用該列舉型別建立新的例項了,這些例項在編譯期間就已經完全確定下來了。
6.靜態匯入:import static
參考 更多泛型知識
深度泛型
java基礎 泛型
int 定義了乙個陣列,陣列元素的型別是int 泛型 定義了乙個集合,集合元素的型別就是泛型定義的型別 泛型 將執行時期出現的問題classcastexception,轉移到了編譯時期 方便與程式設計師解決問題,讓執行事情問題減少,安全。泛型格式 通過 來定義要引用的資料型別 使用泛型 在集合框架中...
Java基礎 泛型 泛型介面 泛型類 泛型方法
一 二 三 泛型方法 1.public t test t t1,t t2 一 泛型 1.泛型產生的背景 原因1 集合中儲存資料時,編譯期間可以儲存任何型別的資料,導致取值時轉換出錯 原因2 每次取值都需要強制轉換,冗餘繁瑣 2.泛型的定義 泛型的本質是乙個引數化的型別 在程式編碼中一些包含引數的類 ...
java基礎 泛型解析
泛型,編寫的 可以被很多不同型別的物件重用。簡單泛型類的定義 public class generic public generic t info public void setinfo t info public t getinfo private t info 用具體的型別替換型別變數 t 就可...