熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

在Eclipse 3.1體驗J2SE 5.0新特性六

2022-06-13   來源: Java開源技術 

  本文將介紹JSE 中三個比較重要的特性枚舉類型注釋類型范型 並在此基礎上介紹在如何在Eclipse 開發環境中開發枚舉類型 注釋類型和范型應用
  
  JSE (Tiger)的發布是Java語言發展史上的一個重要的裡程碑是迄今為止在 Java 編程方面所取得的最大進步
  
  JSE 提供了很多令人激動的特性這些特性包括范型(generics)的支持 枚舉類型(enumeration)的支持 元數據(metadata)的支持 自動拆箱(unboxing)/裝箱(autoboxing) 可變個數參數(varargs) 靜態導入(static imports) 以及新的線程架構(Thread framework)
  
  隨著JSE 的推出 越來越多的集成開發環境(IDE)支持JSE 的開發 著名的開源Java IDE Eclipse從M開始支持JSE 的開發 目前最新的版本是RC
  
  本系列將介紹JSE 中三個比較重要的特性 枚舉類型注釋類型范型 並在此基礎上介紹在如何在Eclipse 開發環境中開發枚舉類型 注釋類型和范型應用本文將介紹范型
  
   范型
  
  范型(Generics)簡介
  
  JSE 中的最顯著的變化之一是添加對泛型類型的支持在JSE 以及之前的版本中 Java程序並不是類型安全的例如 Collection framework中定義的List Map等容器類的元素都是Object類型即這個類包含的元素是Object對象 使用這種方式實現的列表可以用來操作整數實數 字符串或者任何對象類型例如
  
  清單 類型不安全的代碼示例
  
  List stringList = new ArrayList();
  stringListadd(abcde);
  String str = (String)stringListget();
  
  這種方法實現的列表需要使用強制類型轉換(又稱顯示造型)因此不是類型安全的 在上面這段代碼種雖然變量名為stringList 但是我們仍然可以把一個整型對象添加到這個隊列中例如
  
  清單 類型不安全的代碼示例
  
  stringListadd(new Integer());
  
  在這種情況下 從字符列表中獲取對象時 強制類型轉換就會導致運行時異常
  
  清單 類型不安全的代碼示例
  
  String str = (String)stringListget(); //runtime exception
  
  范型是Java邁向類型安全的一個重要步驟使用范型可以構造出類型安全的代碼
  
  聲明范型
  
  所謂范型是指類型參數化(parameterized types)Java是一種強類型的語言在JSE 以及以前的版本中我們在定義一個Java類接口或者方法的時候必須指定變量的類型
  
  在聲明范型類接口或者函數時定義變量的時候不指定某些變量的具體類型 而是用一個類型參數代替在使用這個類接口或者方法的時候 這個類型參數由一個具體類型所代替
  
   范型類
  
  下面的例子中介紹了如何創建一個最簡單范型類
  
  清單 最簡單的范型類
  
  public class GenSample {}
  
  類名後面帶有表明了這個類是范型類其中T被成為類型參數(type parameter) 在使用范型的時候類型參數可以被替換為任何的類類型但是不能是原始類型(primitive type)例如intdouble
  
  下面通過一個列表的例子來具體說明如果聲明范型類和類型參數的用法
  
  清單 范型列表
  
  public class GenList {
  private T[] elements;
  private int size = ;
  private int length = ;
  
  public GenList(int size) {
  elements = (T[])new Object[size];
  thissize = size;
  }
  
  public T get(int i) {
  if (i < length) {
  return elements[i];
  }
  return null;
  }
  
  public void add(T e) {
  if (length < size )
  elements[length++] = e;
  }
  }
  
  在列表的例子中類型參數T被用來表示列表中的元素的類型即這個列表中的元素是T類型的在使用這個列表時 這個類型參數T會被具體的類型所替代
  
  注意由於T時類型參數不是具體的類所以不能使用new操作符創建T的對象例如new T() 或者new T[]
  
   范型接口
  
  在JSE 不僅僅可以聲明范型類也可以聲明范型接口 聲明范型接口和聲明范型類的語法類似也是在接口命稱後面加上例如清單范型接口
  
  public interface GenInterface {
  void func(T t);
  }
  
  聲明多個類型參數的范型類或者接口清
  
  在聲明范型類的時候 可是使用多個類型參數多個類型參數之間用逗號分開 例如
  
  清單 多個類型參數的范型類
  
  public class GenMap {}
  
  Eclipse 的類創建向導支持創建范型類 如下圖所示
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28522.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.