国产探花免费观看_亚洲丰满少妇自慰呻吟_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語言中發揮更大的作用的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东丽区| 措美县| 台北县| 高碑店市| 诏安县| 福贡县| 勐海县| 陆川县| 讷河市| 独山县| 呼伦贝尔市| 兴仁县| 侯马市| 滦平县| 汉中市| 前郭尔| 信丰县| 丘北县| 昭苏县| 镇赉县| 仲巴县| 桐梓县| 神木县| 延庆县| 甘洛县| 会昌县| 苍梧县| 都江堰市| 信丰县| 杂多县| 岳阳县| 临武县| 桦南县| 曲水县| 德钦县| 射洪县| 齐河县| 昌黎县| 连州市| 乌拉特后旗| 化州市|