開始使用 Eclipse 3.1 和 J2SE 5.0

Eclipse 3.1 包括 J2SE 5.0(代號 "Tiger")新特性的完整支援。 這項支援其中一個最重要的結果是, 您完全不會注意它--您預期在 J2SE 1.4 可運作的所有項目(包括編輯、編譯、除錯、快速修正、重構、程式碼動作、搜尋等等), 都能與 J2SE 5.0 的新類型與語法結合地搭配使用。在本書中, 我們會介紹 Eclipse 使用者在使用 J2SE 5.0 時,會遇到的一些較有趣的功能。

先決條件

為了開發符合 J2SE 5.0 的程式碼,您需要有 J2SE 5.0 Java Runtime Environment (JRE)。 如果您第一次啟動 Eclipse 時是使用 J2SE 5.0 JRE,則依預設會使用它。 否則,您需要使用已安裝的 JRE 對話框(視窗 > 喜好設定 > Java > 已安裝的 JRE)將它以 Eclipse 加以登錄。

本書會非常簡短地介紹 J2SE 5.0 的一些新語言特性,但並不適合作為這些特性的教學指導。

編譯器標準層次

若要使用新的 J2SE 5.0 特性,您必須使用已啟用 5.0 標準層次的專案。 新專案可以在新建 > 專案精靈的第一頁標示為符合 5.0:

「新建專案」精靈

若要將現有的 J2SE 1.4 專案轉換成 J2SE 5.0,您只要:
  1. 確定已安裝 J2SE 5.0 JRE。
  2. 在程式碼中開始使用 5.0 特性。
  3. 如果標出編譯器錯誤,利用「快速修正」來更新專案的標準層次:

    啟用 J2SE 5.0 的快速修正

如果需要進一步調整過的控制, 您可以對工作區全面設定編譯器標準層次(視窗 > 喜好設定 > Java > 編譯器),或針對每一個專案個別設定(從專案的快速功能表,選擇內容 > Java 編譯器)。 標準層次不同的專案可以在工作區中並存,且彼此相依。 您也可以使用內容 > Java 編譯器 > 錯誤/警告 > J2SE 5.0 選項, 針對每一個專案進一步調整所產生之編譯器警告和錯誤的類型。

通用類型

通用類型可讓相同類別的物件安全地操作不同類型的物件。 比方說,其允許 List<String> 一律包含 String,而 List<Integer> 一律包含 Integer 的編譯時期保證。

只要是 Eclipse 處理非通用類型的位置,即可處理通用類型:

此外還增加了新的重構:推斷通用類型引數可推斷類別、套件或整個專案中每一個類型參照的類型參數:

呼叫推斷通用類型引數

呼叫重構會產生:

呼叫的推斷通用類型引數

Eclipse 3.1 在搜尋通用類型的參照時,提供了新的選項。請參考以下範例:

具有 List 的四個不同參數化實例的範例

選取 List<Integer> 的參照並使用搜尋 > 參照 > 專案時, 會強調顯示所有這四行中的 List 類型:

搜尋時不含過濾器

您可以利用「「搜尋視圖」功能表來過濾結果:

過濾器不相容只會留下與選定類型的指派相容之類型的參照:

過濾器不相容

過濾器不嚴格只會留下簽章完全相同的類型參照:

過濾器不嚴格

附註

註釋會附加如何使用 Java 類型和方法並記錄到 java 程式檔的 Meta 資料, 之後即可影響編譯或於執行時期查詢。比方說,如果標註的方法未置換 Super 類別中的方法,則 @Override 會觸發編譯器警告:

置換註釋

您可對 Java 類型執行的任何動作,都可以對註釋執行:

有一個非常有用且完整支援 Eclipse 的註釋是 @SuppressWarnings。 比方說,假設有一個 Private 方法目前未使用,但您不想刪除它:

警告:未使用的 Private 方法

對新增 @SuppressWarnings 註釋的警告提議呼叫快速修正:

提出的 SuppressWarnings

選取快速修正即會新增該註釋。Eclipse 編譯器會移除 foo 的警告,來接受該註釋:

插入的 SuppressWarnings

列舉表

列舉是在執行時期,由一組已知、有限的物件所實例化的類型:

列舉類型

同樣地,您可以對 Java 類別執行的任何動作,皆可對列舉執行:

Autoboxing

autoboxing 和 auto unboxing 可於初始類型指派給 Object 參照或從 Object 參照擷取時,產生精確的語法:

強調顯示的 autoboxing

Eclipse 的程式碼操作特性會完美地處理 autoboxing, 提供正確的類型給新的區域變數和正確的程式碼輔助。 為了能夠瞭解程式碼,您也可以將 autoboxing 或 autounboxing 的實例標示成編譯警告(視窗 > 喜好設定 > Java > 編譯器 > 錯誤/警告 > J2SE 5.0 選項 > Boxing 和 unboxing 轉換),或利用語法顏色來強調顯示(視窗 > 喜好設定 > Java > 編輯器 > 語法著色 > Java > Auto(un)boxed 表示式):

啟用強調顯示 autoboxing

加強型 for 迴圈

對於依序操作陣列或集合的每一個元素的一般情況而言,J2SE 5.0 可使用新的、較乾淨的語法。 Eclipse 3.1 提供了 "foreach" 程式碼範本,可自動猜測要疊代的集合:

提出的 foreach 範本

選擇範本會產生:

插入的 foreach 範本

Eclipse 3.1 也提供了「轉換成加強型 for 迴圈」快速輔助,於可能的位置升級 1.4 樣式的 for 迴圈。

其他

J2SE 5.0 的所有其他特性都是由 Eclipse 的編輯、搜尋和程式碼操作工具來彈性處理:

祝您撰寫程式碼愉快!