摘自《Java核心編程》
1、不可以用一個本地類型(如int float)來替換泛型
2、運行時類型檢查,不同類型的泛型類是等價的(Pair<String>與Pair<Employee>是屬于同一個類型Pair),
這一點要特別注意,即如果a instanceof Pair<String>==true的話,并不代表a.getFirst()的返回值是一個String類型
3、泛型類不可以繼承Exception類,即泛型類不可以作為異常被拋出
4、不可以定義泛型數(shù)組
5、不可以用泛型構(gòu)造對象,即first = new T(); 是錯誤的
6、在static方法中不可以使用泛型,泛型變量也不可以用static關(guān)鍵字來修飾
7、不要在泛型類中定義equals(T x)這類方法,因為Object類中也有equals方法,當泛型類被擦除后,這兩個方法會沖突
8、根據(jù)同一個泛型類衍生出來的多個類之間沒有任何關(guān)系,不可以互相賦值
即Pair<Number> p1; Pair<Integer> p2; p1=p2; 這種賦值是錯誤的。
9、若某個泛型類還有同名的非泛型類,不要混合使用,堅持使用泛型類
Pair<Manager> managerBuddies = new Pair<Manager>(ceo, cfo);
Pair rawBuddies = managerBuddies; 這里編譯器不會報錯,但存在著嚴重的運行時錯誤隱患
1、不可以用一個本地類型(如int float)來替換泛型
2、運行時類型檢查,不同類型的泛型類是等價的(Pair<String>與Pair<Employee>是屬于同一個類型Pair),
這一點要特別注意,即如果a instanceof Pair<String>==true的話,并不代表a.getFirst()的返回值是一個String類型
3、泛型類不可以繼承Exception類,即泛型類不可以作為異常被拋出
4、不可以定義泛型數(shù)組
5、不可以用泛型構(gòu)造對象,即first = new T(); 是錯誤的
6、在static方法中不可以使用泛型,泛型變量也不可以用static關(guān)鍵字來修飾
7、不要在泛型類中定義equals(T x)這類方法,因為Object類中也有equals方法,當泛型類被擦除后,這兩個方法會沖突
8、根據(jù)同一個泛型類衍生出來的多個類之間沒有任何關(guān)系,不可以互相賦值
即Pair<Number> p1; Pair<Integer> p2; p1=p2; 這種賦值是錯誤的。
9、若某個泛型類還有同名的非泛型類,不要混合使用,堅持使用泛型類
Pair<Manager> managerBuddies = new Pair<Manager>(ceo, cfo);
Pair rawBuddies = managerBuddies; 這里編譯器不會報錯,但存在著嚴重的運行時錯誤隱患
浙公網(wǎng)安備 33010602011771號