3.2 新增功能 (JDT)

以下是 Eclipse 3.2 版 Java 開發工具的一些比較有趣或重要的變更說明。 它們的分組如下:

另請參閱 Eclipse Platform 3.2 新增功能文件,以瞭解 Platform 的變更。

Java 重構

「引進間接」重構

引進間接是一項新的重構,可讓您將方法的所有呼叫端重新導向到新的方法。 新方法會呼叫原始方法。 如果想要的話,您可以用任何其他實作來取代新方法的預設實作。

當方法必須引進新的行為時,這類間接很有用:

  • 方法無法改變,因為它是程式庫所提供。
  • 方法不能改變,因為它是一個 API 方法。

請利用間接來作為原始方法的錯誤修正,或作為在所有方法呼叫之前或之後迅速新增程式碼的方法。

如果要執行引進間接重構,請選取一個方法,呼叫重構 > 引進間接...,再提供新方法的名稱和宣告類別。

「引進間接」對話框

方法會加到所選發出宣告的類別中。

含更新參照的「引進間接」預覽

所有參照都會更新成呼叫新的方法。

「引進間接」的結果

「擷取超類別」重構

擷取超類別是一項新的重構,它會從一組同層級類型中擷取出共用的超類別。 在套用這項重構之後,所選同層級類型會成為所擷取之超類別的直接子類別。 另外,擷取超類別也可讓您在程式碼中儘可能使用擷取的超類別。

JavaEditorTestsPropertiesEditorTests 是下列中的同層級類型。 第一張圖片顯示重構之前的類型階層。

擷取 EditorTests 之前的階層

下一張圖片顯示利用擷取超類別重構來擷取 EditorTests 之後的類型階層。

擷取 EditorTests 之後的階層

如果要呼叫這項重構,請使用重構 > 擷取超類別...

「清理」精靈

您可以在任意數量的 Java 程式檔、套件或整個 Java 專案上呼叫清理。 它可以協助您執行下列動作:

  • 同時修正多個問題
  • 引領程式碼使用偏好的程式撰寫風格

以下是可執行的動作範例:

  • 強制每個 'if'、'while' 或 'for' 主體使用方括弧(區塊)
  • 利用 'this' 限定所有欄位存取
  • 儘可能使用 'final'

如果要使 Java 1.4 相容程式碼成為 5.0,請利用清理來執行下列動作:

  • 儘可能將所有 for 迴圈轉換成加強型 for 迴圈
  • 利用 @Override 註解來標示所有置換方法

「清理」精靈

請選取一個專案、套件或檔案,再利用程式檔 > 清理... 來啟動這個精靈。

重構歷程

現在,JDT 所提供的大部分重構都是在重構歷程中進行追蹤。 重構基礎架構會儲存工作區執行過的重構的詳細資訊。

您可以利用重構 > 歷程... 來瀏覽重構歷程

「重構歷程」對話框

建立和套用重構 Script

現在,您可以將在本端工作區執行的重構匯出到重構 Script 中,且可以將它部署在任意工作區中。

您可以在不同的實務中使用這些重構 Script,例如,自動修正在各軟體層之間中斷的 API 變更,或提供含有豐富語意的修補程式。

利用重構 > 建立 Script...,從重構歷程中建立重構 Script

「建立 Script」動作

如果要在任意工作區上套用產生的重構 Script,請使用重構 > 套用 Script...

新的延伸點可讓外掛程式作者提供新的或現有的重構之重構 Script 支援。 請參閱 org.eclipse.ltk.core.refactoring.refactoringContributions 延伸點,以取得詳細資料。

含有重構的 JAR 檔匯出

當從工作區匯出 JAR 檔時,「JAR 匯出」精靈會提供將重構資訊併入 JAR 檔的選項。

請利用檔案 > 匯出...,再選取 JAR 檔。 在「JAR 匯出」精靈的第一頁中,選取匯出檢查之專案的重構。 請按一下鏈結來選取要併入的重構。

選取 JAR 匯出重構

之後,用戶端便能夠利用重構 > 移轉 JAR 檔... 重構,將舊版 JAR 檔移轉至新的版本。 另外,如果目前已選取 JAR 檔,您也可以使用建置路徑 > 移轉 JAR 檔...

「移轉 JAR 檔」動作

這項重構會自動更新所有相依於舊版 JAR 檔的程式碼來使用新版的 JAR 檔。

API 感應重構

許多現有的重構在延伸之後,會藉由保持原始成員為重構成員的委派代表來支援 API 相容性:

  • 重新命名方法
  • 重新命名欄位(只限常數)
  • 移動方法
  • 引進參數
  • 變更簽章

「保持原始成員為重構成員的委派代表」的勾選框

您可以在重構對話框中,勾選保持原始方法為重新命名之方法的委派代表來啟用產生委派成員以保留 API 相容性的功能。

「重新命名類型」會更新名稱類似的元素

現在,名稱類似於重新命名之類型的變數和方法,重新命名類型重構都可以將它們重新命名。 這項特性有助於使方法和變數名稱與類型名稱保持同步。

更新類似的宣告使用者介面

如果要呼叫這項重構,請選取一個類型,再使用重構 > 重新命名...

「重新命名套件」重構會重新命名子套件

現在,重新命名套件重構也會因應要求來重新命名子套件。

含有新勾選框的「重新命名套件」對話框

在這個範例中,junit.samples.money 重新命名為 junit.examples.money

如果要呼叫這項重構,請選取一個套件,再使用重構 > 重新命名...

過濾重構預覽

現在,「重構預覽」頁面支援過濾變更。 當在重新命名 Java 元素而要求更新註解和字串中的相符文字時,這尤其有用。

過濾「重構預覽」頁面

畫面顯示將 TestCase 類別重新命名成 TestCasee 時,針對相符文字而過濾的重新命名對話框。

現在,也可以過濾 Java 元素可見性的相關變更。

Java 編輯器

可自訂的內容輔助

現在,重複呼叫內容輔助(在大部分平台中是 Ctrl+Space)會歷經不同的提議種類。

您可以將個別的按鍵捷徑指派給您最愛的提議種類,並利用 開啟「進階內容輔助」喜好設定頁面Java > 編輯器 > 內容輔助 > 進階喜好設定頁面來配置預設內容輔助蹦現畫面中所顯示的種類。

含有 Java 提議的蹦現內容輔助;重複呼叫會啟動範本提議

新的 org.eclipse.jdt.ui.javaCompletionProposalComputer 延伸點可讓外掛程式作者將完成提議和種類提供給 Java 編輯器的內容輔助程序。

完成程式碼中的大小寫混合支援

現在,完成程式碼支援大小寫混合型樣。 例如,在完成 NPE 時,會提議 NullPointerException。 您可以在 開啟「內容輔助」喜好設定頁面Java > 編輯器 > 內容輔助喜好設定頁面中,利用顯示相符的大小寫混合喜好設定來停用這項支援。

完成 NPE 的 Java 編輯器

包覆程式碼的快速功能表

新的包覆方式快速功能表,可讓您以程式碼來包覆所選的各行。 這個功能表可利用自訂範本來延伸。 現在,範本能夠感應必須取出或設成 final 的變數。

以可執行的字碼轉換包覆

請利用程式碼 > 包覆方式或按 Alt+Shift+Z 來直接查看功能表。

您可以在 Java > 編譯器 > 範本喜好設定頁面中,新增您的自訂範本。 範本只需要 ${line_selection} 變數。

新快速修正

新增了若干快速修正,例如:

  • 修正原始類型之存取

    原始存取更正提議

    快速修正會從相同檔案內的使用情況收集資訊。 如果需要更複雜的分析,請使用推斷一般的類型引數重構。

  • 新增遺漏註解屬性

    遺漏註解屬性的快速修正

  • 新增新的註解成員

    新註解成員的快速修正

種類支援

您可以利用 @category 標示,將種類定義在類型、方法和欄位的 Javadoc 註解中。

使用種類的程式碼

種類會顯示在「概要」和「成員」視圖中,以及顯示在「快速概要」中。 「檢視」功能表可讓您選取可見的種類。

顯示種類和種類過濾器的概要

所有成員都可以摺疊

當啟用摺疊時,現在可以依照方法的相同方式來摺疊起始設定程式及其註解。

摺疊的欄位起始設定程式

有些新的文字摺疊指令,可讓您收合所有註解、收合所有成員,以及重設摺疊結構。 這些指令都在 Java 編輯器垂直尺規的摺疊快速功能表中。

在工作區之外的 Java 檔尺規支援和概要

現在,Java 編輯器會顯示垂直尺規,「概觀」頁面和「快速概觀」能夠顯示外部 Java 檔和儲存庫中之 Java 檔的概要。

尺規支援

Java 編譯器

Java SE 6.0 標準

現在完整支援 Java SE 6.0 標準。 尤其是,現在 StackMapTable 屬性(請參閱 JSR 202)是以 1.6 目標產生在 .class 檔中。

設定 6.0 標準

空值參照分析

現在,Java 編譯器能夠執行區域變數的基本空值參照分析。

您可以在 開啟「錯誤/警告」喜好設定頁面Java > 編譯器 > 錯誤/警告喜好設定頁面中,利用潛在程式設計問題 > 空值參照喜好設定來啟用這項選用的診斷。

含空值參照警告的 Java 編輯器

請注意,這項分析非常保守,它遵循明確的指派規則。 它只會考量可能有問題的情況(例如,稍後是否執行空值檢查),而不會反應所有可能的情況。

在 5.0 標準模式中,您可以利用 @SuppressWarnings("null") 來抑制空值參照警告。

改良的語法回復

現在,內部 Java 剖析器有更好的語法錯誤復原功能。 在 Eclipse 3.1 中,語法錯誤會防止出現後續的錯誤。 現在,剖析器可以從含有錯誤的陳述式回復,繼續執行進一步的分析。

在下列範例中,雖然前一個陳述式遺漏分號,仍會偵測到指向 bar() 方法的無效參照。

含語法回復的 Java 編輯器

例如,這會使只影響單一檔案的重構能夠容忍語法錯誤。 例如,現在可以在尚未寫好的方法頂端,重新命名或擷取區域變數。

擷取不完整方法中的區域變數

將可配置的錯誤當作非嚴重錯誤來處理

開啟「建置」喜好設定頁面Java > 編譯器 > 建置喜好設定頁面中的將可配置的錯誤當作嚴重錯誤來處理選項用來控制是否將可配置的錯誤視為嚴重錯誤。 依預設,會啟用這個選項。

如果停用這個選項,即使程式碼含有錯誤,也能夠執行編譯的程式碼。

偵測不必要的 $NON-NLS$ 標籤

現在,會偵測到不必要的 $NON-NLS$ 標示。 如果行註解的開頭是 //$NON-NLS-x$,且同一行沒有對應的字串,便會報告問題。

您可以利用偵測未提出的字串的相同喜好設定來開啟和關閉報告作業。 您可以在 開啟「錯誤/警告」喜好設定頁面Java > 編譯器 > 錯誤/警告喜好設定頁面中,利用程式撰寫風格 > 未提出的字串(遺漏/未用的 $NON-NLS 標示)喜好設定來設定它。

含有未用 NLS 標示的 Java 編輯器

如果要移除不必要的標示,請利用「快速修正程式」(Ctrl+1) 或 Ctrl+1、Ctrl+Enter 來移除編譯單元內所有不必要的標示。

偵測使用原始類型

現在會偵測到使用原始類型。 原始類型是一個指向某一般的類型且不含任何類型引數的參照(如 List 替代 List<Element>)。

您可以在 開啟「錯誤/警告」喜好設定頁面Java > 編譯器 > 錯誤/警告喜好設定頁面中,利用一般的類型 > 使用原始類型喜好設定來獨立啟用這項選用的診斷。

使用原始類型的 Java 編輯器

您可以增加 @SuppressWarnings("unchecked") 來抑制這個警告。

另外,也實作了快速修正程式來協助解決使用原始類型的問題。

偵測方法參數指派

指派給方法參數也被視為不好的作法。

如果要偵測和報告這些指派,請開啟 開啟「錯誤/警告」喜好設定頁面Java > 編譯器 > 錯誤/警告喜好設定頁面,以及啟用程式撰寫風格 > 參數指派喜好設定。

含有參數指派警告的 Java 編輯器

偵測未用的標籤

現在,Java 編譯器會偵測未用的陳述式標籤。

您可以在 開啟「錯誤/警告」喜好設定頁面Java > 編譯器 > 錯誤/警告喜好設定頁面中,利用不必要的程式碼 > 未用的 break/continue 標籤喜好設定來啟用這項選用的診斷。

使用原始類型的 Java 編輯器

偵測切換案例失敗

現在,Java 編譯器可以偵測出是否可能因為上一個案例失敗而進入某個案例。 容許空白案例。

您可以在 開啟「錯誤/警告」喜好設定頁面Java > 編譯器 > 錯誤/警告喜好設定頁面中,利用潛在程式設計問題 > 切換案例失敗喜好設定來啟用這項選用的診斷。

含有失敗警告的 Java 編輯器

已實作將 break 陳述式加到上一個案例的快速修正。

改良的大型 .jar 檔效能

現在,內部 Java 模型快取的大小限制是提供給執行 Eclipse IDE 之 Java 虛擬機器的資料堆大小上限(大部分 JVM 上的 -Xmx VM 引數)的一個函數。

當建置類別路徑有大型 .jar 檔時,提高資料堆大小可以明顯改進效能。

重建已修改的 .class 檔

現在,Java 建置器可以在輸出資料夾中,利用最初的原始檔來重建已修改或移除的 .class 檔。

您可以在 開啟「建置」喜好設定頁面Java > 編譯器 > 建置喜好設定頁面中,利用輸出資料夾 > 重新建置他人修改過的類別檔喜好設定來進行這項控制。

附加的 Javadoc 之 Javadoc 視圖和工具提示

現在,Javadoc 視圖和 Javadoc 浮動說明會從未附加程式碼之程式庫的附加 Javadoc 中擷取資訊。

JUnit Tooling

JUnit 4 支援

已更新 JUnit 支援來執行和撰寫 JUnit 4 測試。 請檢視 www.junit.org,以進一步瞭解 JUnit 4。

  • 利用新建 JUnit 測試案例精靈來產生 JUnit 4 測試類別:
    「新建測試案例」精靈中的 JUnit 4 支援
  • 利用所提供要加到建置路徑中的 JUnit 程式庫
    利用快速修正新增 JUnit 4 程式庫
  • 利用以 JUnit 執行,依照正常方式來啟動 JUnit 4 測試
  • 利用 @Ignore 來標示測試,以忽略這些測試

JUnit 視圖歷程

現在,JUnit 視圖可以處理多項並行的測試執行。 您可以利用新的歷程,在作用中和最近的測試執行之間切換。 您不需要停止已在執行的測試,便能夠從歷程中重新執行測試。

JUnit 歷程

這適用於 JUnit 3,也適用於 JUnit 4。

Java 除錯器
執行環境

執行環境會說明執行時期的功能,如 J2SE-1.4。 您可以指定以參照執行環境為基礎,用來執行、除錯和建置的 JRE。 新的 開啟「執行環境」喜好設定頁面Java > 已安裝的 JRE > 執行環境喜好設定頁面會顯示安裝在工作區中,相容於每個執行環境的 JRE。 完全符合執行環境需求的 JRE 會顯示成粗體,超出環境需求的 JRE 用預設字型來顯示。 當多個 JRE 相容於執行環境時,您可以勾選一個預設 JRE,以將它用在這個環境上。

「執行環境」喜好設定頁面

相對於參照明確的 JRE,參照執行環境的建置路徑或啟動配置,可攜性會比較好,因為 JRE 之執行環境的解析與它的名稱無關。 請利用 JRE 標籤或「編輯程式庫」精靈來指定用來執行或建置的執行環境。

「啟動配置」對話框中的 JRE 標籤

系統內容啟動變數

新的啟動變數可讓您從 Eclipse 執行時期中,動態指定 Java 程式和 VM 引數等系統內容。 這個變數接受單一引數,這個引數是將在啟動之時解析的系統內容名稱。

例如,java.home 系統內容便是用 ${system_property:java.home} 來參照。

「啟動配置」對話框中的「引數」標籤

陣列的評估支援

現在,支援 Java 陣列的評估和內容輔助。 請利用 this 來參照所選的陣列。

「變數」視圖中的程式碼輔助

Java 執行緒群組

現在,您可以在視圖功能表中切換顯示執行緒群組,以在「除錯」視圖中顯示執行緒群組。

在「除錯」視圖中啟用執行緒群組

執行時期類別路徑匯出項目

執行時期類別路徑可以配置成只包括建置路徑中的匯出項目。 依預設,執行時期類別路徑會包括所有項目(匯出和非匯出)。

類別路徑標籤中,選取預設項目,再利用編輯... 按鈕來配置選項。

「啟動配置」對話框中的「類別路徑」標籤

「編輯執行時期類別路徑」對話框

暫停執行緒和暫停 VM

開啟「除錯」喜好設定頁面Java > 除錯喜好設定頁面新增了一個選項,供您控制新建的岔斷點是暫停單一執行緒或暫停整個 VM。

「除錯」喜好設定頁面

雜項

Java 類型指示器

請在開啟「裝飾器」喜好設定頁面一般 > 外觀 > 標籤裝飾喜好設定頁面上啟用 Java 類型指示器,以瞭解編譯單元或類別檔中的第一個類型是什麼。 介面、註解和列舉都有裝飾,一般類別沒有裝飾。

「類型指示器」標籤裝飾器

尋找中斷的提出字串

新動作可以搜尋中斷的提出字串。 搜尋會報告遺漏、未用和重複的索引鍵。

「尋找中斷的提出字串」動作

如果要開始搜尋,請選取一個內容檔、套件或整個專案,再使用程式碼 > 尋找中斷的提出字串

改良的 Eclipse 提出字串機制支援

現在,Eclipse 提出字串的機制,與傳統提出字串有同類的支援。 在 Java 編輯器中,當您在提出之字串的索引鍵上徘徊時,相關聯的提出值會顯示在浮動說明中。

NLS 浮動說明

Ctrl+按一下索引鍵,可以直接導覽到對應內容檔中的項目。 在內容檔編輯器中,您可以利用 Ctrl+按一下來尋找索引鍵在程式碼中的使用位置。

從範例片段建立類型

您可以將包含 Java 類型的程式碼片段直接貼到套件或來源資料夾中,以建立新的編譯單元。 例如,選取和複製這個原始碼
package pack;
   public class HelloWorld {
      public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
之後,在「套件瀏覽器」中選取一個來源資料夾,使用 Ctrl+V(編輯 > 貼上)。 這會自動建立一個新套件 'pack',以及含有複製之內容的 'HelloWorld.java' 檔。

產生 hashCode() 和 equals()

hashCode()equals() 方法可以用一個新動作來產生。 您可以選取一些欄位來作為實作應該使用的基礎欄位。

「產生 hash 和 equals」精靈

如果要呼叫這個動作,請選取一個類型,再使用程式碼 > 產生 hashCode() 和 equals()...

指令行程式碼格式製作程式

現在,您利用新的無監視器型格式製作程式應用程式,不需要啟動 Eclipse 使用者介面,就可以將原始碼格式化。 指令行格式製作程式的運作方式,如同標準的 Eclipse 應用程式。

下列指令利用 config.prefs 檔所指定的選項來格式化 src 資料夾中的程式檔:

eclipse -application org.eclipse.jdt.core.JavaCodeFormatter -config d:/config.prefs c:/src

請參閱使用格式製作程式應用程式,以取得詳細資料。

Java 類延伸規格的支援

現在也支援含有純 Java 程式碼,但副檔名不是 .java 的檔案。 您可以利用開啟「內容類型」喜好設定頁面一般 > 內容類型喜好設定頁面(文字 > Java 程式檔)來新增 Java 類延伸規格。

以 'Y.abc' 為編譯單元的套件瀏覽器