Java泛型中的類型擦除機制簡單理解


Java的泛型是JDK1.5時引入的。下面只是簡單的介紹,不做深入的分析。

Java的泛型是偽泛型。為什么說Java的泛型是偽泛型呢?因為,在編譯期間,所有的泛型信息都會被擦除掉。正確理解泛型概念的首要前提是理解類型擦出(type erasure)。

Java中的泛型基本上都是在編譯器這個層次來實現的。在生成的Java字節碼中是不包含泛型中的類型信息的。使用泛型的時候加上的類型參數,會在編譯器在編譯的時候去掉。這個過程就稱為類型擦除。

如在代碼中定義的List<Object>和List<String>等類型,在編譯后都會變成List。JVM看到的只是List,而由泛型附加的類型信息對JVM來說是不可見的。Java編譯器會在編譯時盡可能的發現可能出錯的地方,但是仍然無法避免在運行時刻出現類型轉換異常的情況。類型擦除也是Java的泛型實現方法與C++模版機制實現方式之間的重要區別。

 

參考:

http://blog.csdn.net/lonelyroamer/article/details/7868820(以上內容轉自此篇博客)

https://www.cnblogs.com/xltcjylove/p/3671943.html

https://www.cnblogs.com/chenpi/p/5508177.html

http://blog.csdn.net/caihaijiang/article/details/6403349


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM