作為關于泛型類型擦除的官方教程,這句話讓我很困惑。當類型轉換插入可能準確發生時?我嘗試了一些簡單的泛型用法并javap -c a.class用于檢查字節碼,但似乎沒有像我預期的那樣插入類型轉換。所謂的重復更多的是關于使用類型轉換以確保正確的橋接方法polymorphism,而我想知道第二個語句的確切含義。必要時插入類型轉換以保持類型安全??梢蕴峁┤魏卫觼碜C明它嗎?
1 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
最后,我認為Jon Skeet 的回答消除了困惑。
當使用泛型時,它們被轉換為編譯時檢查和執行時強制轉換。
當我們嘗試編譯a.java和反編譯時a.class,我們會看到魔法(編譯器幫助自動插入類型轉換)。
List<String> list = new ArrayList<>();
list.add("hell");
out.println(list.get(0));
反編譯后:
ArrayList var3 = new ArrayList();
var3.add("hell");
System.out.println((String)var3.get(0));
Using Legacy Code in Generic Code 來自官方通用教程:
...只要生成的代碼類型不正確,就會插入適當類型的強制轉換...
添加回答
舉報
0/150
提交
取消