91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中泛型擦除的原理是什么

發布時間:2021-04-29 16:59:46 來源:億速云 閱讀:191 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Java中泛型擦除的原理是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。

1、說明

在編譯過程中,可以獲得類型變量的信息。因此,set方法可以在編譯器中進行類型檢查,非法類型不能通過編譯。但是對于get方法,由于擦除機制,操作時的實際引用類型是Object類型。

為了恢復返回結果的類型,編譯器在get后添加了類型轉換。因此,在genericHolder.class文件main方法主體的第18行有類型轉換的邏輯。這是編譯器自動添加的。

因此,我們處理了泛型對象的讀寫位置,并對代碼添加了限制。

2、實例

//GenericHolder.java
public class GenericHolder<T> {
    T obj;
    public T getObj() {
        return obj;
    }
    public void setObj(T obj) {
        this.obj = obj;
    }
    public static void main(String[] args) {
        GenericHolder<String> holder = new GenericHolder<>();
        holder.setObj("Item");
        String s = holder.getObj();
    }
}
 
//GenericHolder.class
public class GenericHolder<T> {
  T obj;
 
  public GenericHolder();
    Code:
       0: aload_0       
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return        
 
  public T getObj();
    Code:
       0: aload_0       
       1: getfield      #2                  // Field obj:Ljava/lang/Object;
       4: areturn       
 
  public void setObj(T);
    Code:
       0: aload_0       
       1: aload_1       
       2: putfield      #2                  // Field obj:Ljava/lang/Object;
       5: return        
 
  public static void main(java.lang.String[]);
    Code:
       0: new           #3                  // class GenericHolder
       3: dup           
       4: invokespecial #4                  // Method "<init>":()V
       7: astore_1      
       8: aload_1       
       9: ldc           #5                  // String Item
      11: invokevirtual #6                  // Method setObj:(Ljava/lang/Object;)V
      14: aload_1       
      15: invokevirtual #7                  // Method getObj:()Ljava/lang/Object;
      18: checkcast     #8                  // class java/lang/String
      21: astore_2      
      22: return        
}

關于Java中泛型擦除的原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江安县| 新安县| 化德县| 镇巴县| 佛冈县| 梧州市| 开平市| 鹰潭市| 惠安县| 巨鹿县| 松桃| 邵阳县| 江山市| 左权县| 延边| 峨眉山市| 四平市| 道孚县| 平遥县| 安陆市| 无锡市| 博乐市| 苏尼特左旗| 白城市| 乌拉特后旗| 静乐县| 池州市| 威宁| 奉贤区| 谷城县| 蒙阴县| 东乌| 沂南县| 溧水县| 盐山县| 博野县| 卓资县| 越西县| 宁波市| 云龙县| 云和县|