JAVA 泛型機制原理,泛型擦除機制

JAVA 泛型機制原理,泛型擦除機制

  • 泛型的原理:
    Java泛型是jdk5引入的一種機制。爲了向下兼容,所以Java虛擬機是不支持泛型的,也就是說Java泛型是一種僞泛型機制。

  • 泛型的擦除機制:
    僞泛型機制就是說:在編譯期間把泛型的信息全部擦除掉了,所以的泛型最終都變成了最原始的類型(Object);在運行期就不存在泛型的信息。

  • 編譯器怎麼擦除泛型的?

    1. 檢查泛型的類型,獲取目標泛型
    2. 擦除類型變量,並替換爲限定類型
      a. 如果沒有指定類型變量(),則用Object爲原始類型
      b.如果限定類型變量(),則用A作爲原始類型
      c.如果有多個限定類型(<T extends A & B & C >),則用第一個邊界A作爲原始類型
    3. 必要時插入類型轉換以保持類型安全
    4. 生成橋方法用在擴展的時候保持多態性
  • 泛型的副作用?

    1. 使用泛型後,不能使用基本數據類型(byte,short,int ,long,float,double,boolean,char);
      a. 原因:因爲擦除後變成Object,而Object無法存放int類型
    2. 不能使用 instanceof運算符
      a. 原因:因爲擦除後只剩下原始類型,泛型信息不存在。
    3. 泛型在靜態方法和靜態類使用問題
      a. 泛型靜態參數創建時候報錯:泛型的靜態參數在創建的時候就要確定參數
      b.泛型靜態方法創建成功:方法在調用的時候在確定泛型類型
    4. 泛型類型中方法衝突
      a.比如equals方法:泛型擦除後變成了Object,object方法有equals方法,相當於重新定義equals方法

題外話:謝謝大家觀看,有不足之處歡迎大家一起討論;碼字不易,大家喜歡,麻煩點贊哦。


靈魂三問:

  • 有沒有覺得技術得不到系統的提升,技術成長慢?
  • 有沒面試懵逼,升職加薪難?
  • 有沒有想過去大一點的世界看看?

有期望JAVA技術鞏固的、Android知識進階的、期望升職加薪的、Android面試技巧的大廠面試真題的;大家可以加我QQ哦:1070800492。我們一起學習,一起進步!

重要的事情說三遍:

  • 學習、掙錢、自由
  • 學習、掙錢、自由
  • 學習、掙錢、自由

疫情當下,唯有自強

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章