国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在Eclipse 3.1體驗J2SE 5.0新特性八(圖)

2019-11-18 13:01:32
字體:
來源:轉載
供稿:網友

  
 在Eclipse 3.1體驗J2SE 5.0新特性八(圖)(圖一)


  
圖3.3.2 破壞類型安全引起的錯誤

  
  3.3.3 二義性錯誤
  
  GenMap在聲明是使用了2個類型參數T和V, 因此在創建GenMap的對象的時候也需要提供2個具體的類類型來替代這2個類型參數, 例如:
  
  清單9, 多個參數的范型類
  
  GenMap gm = new GenMap();
  GenMap gm2 = new GenMap();
  
  上例中,T和V雖然看起來是兩個不同的類型參數,但是在使用這個范型類的時候, T和V很有可能被替換成同一種類型。因此在聲明多個類型參數的范型類時, 要注重避免這種二義性錯誤,例如:
  
  清單10,二義性錯誤
  
  public class GenMap {
  //編譯錯誤, 二義性錯誤
  public void set(T t){}
  public void set(V v){}
  }
  
  在上面這段代碼,假如T和V被替換成同一種類型,set函數的簽名(signature)就是完全一樣的, 所以編譯器會報告二義性錯誤。正確的用法是聲明2個不同名的方法, 例如:
  
  清單10, 二義性錯誤
  
  public class GenMap {
  public void setKey(T t){}
  public void setValue(V v){}
  }
  
  
在Eclipse 3.1體驗J2SE 5.0新特性八(圖)(圖二)

  
圖3.3.3 二義性錯誤

  
  3.3.4 使用通配符
  
  前面我們創建了范型的列表,假如我需要一個方法來處理范型列表,例如, 我們希望把列表中的每個元素都打印出來,但是類型參數(type parameter)只能使用在聲明一個范型類的時候,假如類型參數使用在函數定義里會導致編譯錯誤
  
  public static void PRint(GenList list){} //編譯錯誤
  
  在這種情況下, 我們需要用另外一種方法來表示一個范型類, 否則, 就可能需要書寫多個print函數
  
  public static void print(GenList list){}
  public static void print(GenList list){}
  …
  public static void print(GenList list){}
  
  J2SE 5.0中提供了范型的通配符"?","?"可以用來代替任何類型, 例如使用通配符來實現print方法
  
  public static void print(GenList list) {}
  
  3.4. 范型的一些局限型
  
  (1) 類型參數不能實例化, 例如,
  
  T t= new T();  //編譯錯誤
  
  (2) 不能實例化類型參數的數組
  
  T[] ts= new T[10];  //編譯錯誤
  
  (3) 類的靜態變量不能聲明為類型參數類型
  
  public class GenClass {
  private static T t;  //編譯錯誤
  }
  
  (4) 范型類不能繼續自Throwable以及其子類
  
  public GenEXPection extends Exception{}  //編譯錯誤
  
  3.5.范型小結
  
  范型是J2SE 5.0所提供的一項強大的功能, 使用范型可以創建類型安全的、可重用的代碼, 雖然目前java的范型還無法和C++的范型相提并論, 但是, 隨著Java語言本事的演進, 范型會在Java語言中發揮更大的作用的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌都县| 金秀| 旌德县| 平顺县| 利津县| 长汀县| 抚宁县| 安陆市| 杭州市| 贵定县| 财经| 贵德县| 花莲市| 西峡县| 罗城| 穆棱市| 灵宝市| 安丘市| 易门县| 花莲县| 时尚| 大庆市| 九江县| 阿克苏市| 滕州市| 安阳县| 浠水县| 涟水县| 吉水县| 仙游县| 秦安县| 赣榆县| 梁河县| 城口县| 汤阴县| 龙州县| 米脂县| 司法| 化德县| 滨海县| 乌海市|