最近在學習泛型,一直不理解泛型擦除是怎麼回事,也查閱很多部落格但還是不理解,都沒說清楚泛型擦除是怎麼進行的,是怎麼擦除的,都是說泛型擦除是在編譯後,然後將泛型資訊擦除,將泛型編譯為引數型別對應的型別:
有Test.java檔案,檔案內容為
public static void main(String[] args){
List<String> list=new ArrayList();①
}
問題1:泛型擦除是在編譯後,編譯後就是把全部.java檔案編譯成.class檔案,擦除是擦除的是執行①後的實際物件中的嗎?這似乎也說不通,因為new ArrayList() 的時候並沒有限定型別,只是在宣告的時候限定了型別
問題2:因為查閱資料都說的是編譯後進行泛型擦除,就是說這個不可能是在new一個物件的時候進行泛型擦除,因為編譯時還不能確定new 的具體是哪個物件,
那麼泛型擦除到底是哪個階段進行的?泛型擦除的具體wei'z是在哪?
[admin
]