當前位置:才華齋>計算機>java語言>

java編譯器的泛型

java語言 閱讀(1.82W)

導語:泛型以限定集合中的輸入型別,讓編譯器擋住源程式中的非法輸入。下面是相關介紹,歡迎參考!

java編譯器的泛型

**泛型是提供給javac編譯器使用的,可以限定集合中的輸入型別,讓編譯器擋住源程式中的非法輸入,

編譯器編譯帶型別說明的集合時會去除掉“型別”資訊,使程式執行效率不受影響,

對於引數化的泛型型別,getClass()方法的返回值和原始型別完全一樣。

由於編譯生成的位元組碼會去掉泛型的型別資訊,只要能跳過編譯器,

就可以往某個泛型集合中加入其它型別的資料,例如,用反射得到集合,再呼叫其add方法即可。

**ArrayList類定義和ArrayList類引用中涉及如下術語:

整個稱為ArrayList泛型型別

ArrayList中的E稱為型別變數或型別引數

整個ArrayList稱為引數化的型別

ArrayList中的Integer稱為型別引數的例項或實際型別引數

ArrayList中的.<>念著typeof

ArrayList稱為原始型別

**引數化型別與原始型別的相容性:

引數化型別可以引用一個原始型別的物件,編譯報告警告,

例如, Collection c = new Vector();//可不可以,不就是編譯器一句話的事嗎?

原始型別可以引用一個引數化型別的物件,編譯報告警告,

例如, Collection c = new Vector();//原來的方法接受一個集合引數,新的型別也要能傳進去

**引數化型別不考慮型別引數的繼承關係:

Vector v = new Vector