泛型的理解

2022-09-11 22:27:34 字數 1229 閱讀 9953

--.泛型是編譯器層面上的而不是虛擬機器上的,虛擬機器上不存在泛型.

x.可以使用泛型的有 類,介面和方法.泛型方法可以直接定義在普通類中

方法的如下:

public

t gett(t t);

public static

extends abc> t gett(t t);

是必須存在的,可以限定返回值和引數t
x.泛型在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<?>並不等同於listlist實際上確定了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 區分,陣列為引用型別,因為定義陣列時...