| 1 | 不可用基本型別作型別參數 | Pair<int> ❌ → Pair<Integer> ✅ |
| 2 | 執行期類型擦除 | Pair<String> 與 Pair<Integer> 同為 Pair;a instanceof Pair<String> 編譯錯誤,僅能 a instanceof Pair |
| 3 | 泛型類不可繼承 Exception | class MyEx<T> extends Exception ❌ |
| 4 | 不可建立泛型陣列 | new T[10] ❌,new Pair<String>[10] ❌ → 用 List<Pair<String>> |
| 5 | 不可實例化型別參數 | T t = new T() ❌ → 用工廠/反射/供應者 Supplier<T> |
| 6 | static 語境不可使用型別參數 | 靜態欄位/方法無法引用 T;static T single ❌ |
| 7 | 避免定義 equals(T) | 擦除後與 Object.equals(Object) 衝突,改用 equals(Object) 內部檢查 |
| 8 | 不同參數化類型無子型關係 | Pair<Manager> 不能賦值給 Pair<Employee>,即使 Manager 是 Employee 子類 |
| 9 | 原始類型與泛型混用風險 | Pair<Manager> mp = ...; Pair raw = mp; 編譯警告但執行期可能 ClassCastException |