--.泛型是編譯器層面上的而不是虛擬機器上的,虛擬機器上不存在泛型.
x.可以使用泛型的有 類,介面和方法.泛型方法可以直接定義在普通類中
方法的如下:
publict gett(t t);
public static
extends abc> t gett(t t);
是必須存在的,可以限定返回值和引數tx.泛型在jvm 中執行的時候,也就是說引數型別被擦除時,是使用型別引數的上邊界來確定的,即最父類.如 list(list是list的乙個例項型別,在jvm 中也是object) 那麼t 在jvm 中就是object 物件.如果是 list那麼 t 在jvm 中就是string.
---.泛型的轉換
1.強制型別轉換.
2.用橋方法保證繼承的多型.
參考:《核心1> 12.5.1 節 p535
0. 泛型的型別引數不能用在j**a異常處理的catch語句中。因為異常處理是由jvm在執行時刻來進行的。由於型別資訊被擦除,jvm是無法區分兩個異常型別myexception;
和myexception
的。對於jvm來說,它們都是 myexception型別的。也就無法執行與異常對應的catch語句。
1.?萬用字元所代表的其實是一組型別,但具體的型別是未知的。list<?>
所宣告的就是所有型別都是可以的。但是list<?>
並不等同於list
。list
實際上確定了list
中包含的是object
及其子類,在使用的時候都可以通過object
來進行引用。而list<?>
則其中所包含的元素型別是不確定。其中可能包含的是string
,也可能是integer
。如果它包含了string
的話,往裡面新增integer
型別的元素就是錯誤的。正因為型別未知,就不能通過new arraylist<?>()
的方法來建立乙個新的arraylist
物件。因為編譯器無法知道具體的型別是什麼。但是對於list<?>
中的元素確總是可以用object
來引用的,因為雖然型別未知,但肯定是object
及其子類。
關於泛型,什麼是泛型,如何理解泛型
泛型是jdk5中引入的特性,它提供了編譯時型別安全檢測機制,該機制允許在編譯時檢測到非法的型別,就不至於在執行時出現轉換異常,它的本質是引數化型別 即以任何型別 t 作為引數,在使用時可以傳入型別t的具體值 t 也就是將型別由原來的具體型別用引數t表示 即型別引數化 然後在使用 呼叫時傳入具體的型別...
泛型的約束理解
1.引用型別約束 struct refsamplewhere t class 引用型別用class表示約束,其他的引用型別為具體的約束。表示對於的約束必須為乙個類 引用型別 不能是值型別 int,char,datatime,struct 可以是介面inte ce 區分,陣列為引用型別,因為定義陣列時...
泛型的約束理解
1.引用型別約束 struct refsamplewhere t class 引用型別用class表示約束,其他的引用型別為具體的約束。表示對於的約束必須為乙個類 引用型別 不能是值型別 int,char,datatime,struct 可以是介面inte ce 區分,陣列為引用型別,因為定義陣列時...