泛型注意的細節

2021-08-29 17:05:55 字數 650 閱讀 2805

1、不可以用乙個本地型別(如int   float)來替換泛型.比如list不能用list型式

2、執行時型別檢查,不同型別的泛型類是等價的(pair與pair是屬於同乙個 型別 pair),這一點要特別注意:即如果a instanceof pair==true的話,並不代表a.getfirst()的返回值是乙個string型別

3、泛型類不可以繼承exception類,即泛型類不可以作為異常被丟擲

4、不可以定義泛型陣列

5、不可以用泛型構造物件,即t first = new t(); 是錯誤的

6、在static方法中不可以使用泛型,泛型變數也不可以用static關鍵字來修飾

7、不要在泛型類中定義equals(t x)這類方法,因為object類中也有equals方法,當泛型類被擦除後,這兩個方法會衝突

8、根據同乙個泛型類衍生出來的多個類之間沒有任何關係,不可以互相賦值,即pairp1; pairp2;   p1=p2; 這種賦值是錯誤的。

9、若某個泛型類還有同名的非泛型類,不要混合使用,堅持使用泛型類

pairmanagerbuddies = new pair(ceo, cfo);

pair rawbuddies = managerbuddies; 這裡編譯器不會報錯,但存在著嚴重的執行時錯誤隱患

泛型類的注意事項

1.泛型類如果沒有指定具體型別,此時操作型別為object 2.泛型的型別引數只能是類型別,不能是基本資料型別 employee int e new employee 錯誤 3.泛型型別在邏輯上可以看成多個不同型別,但是實際上都是相同型別 employeee1 new employee employ...

泛型使用注意事項

引數化型別可以引用乙個原始型別的物件,編譯報告警告,例如,collectionc new vector 可不可以,不就是編譯器一句話的事嗎?原始型別可以引用乙個引數化型別的物件,編譯報告警告,例如,collection c new vector 原來的方法接受乙個集合引數,新的型別也要能傳進去 引數...

泛型 泛型類 泛型方法 泛型擦除

1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...