這份教程演示了 Eclipse 的最新發行版 V3.1 中的許多新特性。如果正考慮 從以前的發行版升級到 V3.1,或者正考慮從其他集成開發環境轉到 Eclipse, 那麼您會發現本教程非常有用。如果想修改代碼,以利用 Java ™ 語言的 最新一代 Java 2 Standard Edition V1.5(為 Java 編程語言添加了許多強大 的結構和便利),本教程也會給您帶來很大的幫助。
預備知識
了解本教程的學習目標和最佳學習方式。
關於本教 程
本教程演示了 Eclipse 的最新發行版 V3.1 中的許多新特性。如果正 考慮從以前的發行版升級到 V3.1,或者正考慮從其他集成開發環境轉到 Eclipse,那麼您會發現本教程非常有用。如果想修改代碼,以利用 Java 語言 的最新一代 Java 2 Standard Edition V1.5(為Java 編程語言添加了許多強 大的結構和便利),本教程也會給您帶來很大的幫助。
目標
在本 教程中,您將看到 Eclipse V3.1 的許多新特性。您將學習如何安裝 Eclipse 平台和底層的 Java 虛擬機(JVM)軟件,研究許多 Eclipse V3.1 創新,並探 索新的 Java 開發工具(JDT)通過 J2SE V1.5 的新語言構造促進開發的許多示 例。
先決條件
為更好地學習本教程,您應當具備 Java 軟件開發的經驗和 在 IDE 中創建代碼的經驗。還應當有從命令行安裝軟件、設置管理 shell 和系 統環境變量(例如 Java 語言的 CLASSPATH 和系統的 PATH)的經驗。熟悉 Eclipse 以前的發行版也有助於學習,但並不是必需的。
在開始之前, 必須在所用的 UNIX®、Solaris、Linux®、Mac OS X 或 Microsoft® Windows® 系統上安裝幾個軟件包。
具體來說,需要一個工作正常的 JVM 和一份 Eclipse V3.1 平台的副本。下 面是所需軟件的完整列表:
J2SE V1.5 Software Development Kit (SDK) (J2SE V1.5 也稱為 Java 2 Platform,Standard Edition V5.0。)
J2SE V1.5 Java Runtime Environment (J2RE)
Eclipse V3.1 SDK
系統需求
任何具有 JVM 的計算機都應當能夠運行 Eclipse。 但是,由於本文介紹的許多特性都針對 J2SE V1.5,所以機器最好能夠運行這個 版本的 Java。Sun Microsystems 為 Solaris、Windows 和 Linux 提供了 J2SE V1.5。蘋果為 Mac OS X (版本 10.4.4)提供了 J2SE V1.5。還支持其他一些 平台。
如果沒有安裝 J2SE V1.5 和 Eclipse V3.1,在繼續安裝之前應 確保至少有 300MB 的物理磁盤空間可用。還應當有足以運行 JVM 的內存。一般 來說,64 MB 以上可用物理內存是運行 JVM 的必備條件。可用內存越大,性能 就會越高。
Eclipse 簡介
經過一段相對較短時間,Eclipse 已經 成為開發其他 IDE 和開發許多問題領域的不同應用程序的流行基石。
例 如,Ruby 開發工具是一組特定於 Ruby 的插件,可以把 Eclipse 變成強大的 Ruby 編輯器。同時,Azureus 這個得到高度評價和廣泛應用的 Java 應用程序 ,能夠下載 BitTorrent 的 torrent (大型文件集合),它以 Eclipse 的富客 戶端平台(RCP)為基礎。
當然,Eclipse 也是一種功能日益強大、日益 受到人們歡迎的 IDE,可以編寫許多編程語言的代碼。由於它有著可擴展的框架 ,因此開發人員往往會單獨為 Eclipse 調整最尖端的開發工具。因為它的流行 ,商業開發工具廠商(例如 Rational® 和 Oracle)現均已提供專門為與 Eclipse 集成而設計的產品。
另外,Eclipse 的管理主體 —— Eclipse 基金會 —— 不斷為核心項目注 入資金,以進一步擴展 Eclipse 的功能。例如,Eclipse 測試和性能工具平台 (TPTP)項目就把測試、性能評測和監視工具添加到核心 Eclipse 平台。另一 個項目,Eclipse Web 工具平台(WTP)項目,添加的工具和技術則有助於開發 以 Web 為中心的應用程序。
總而言之,Eclipse 是大量工具的平台和保護傘,它促進了開發、便利了重 新開發(或 重構)、簡化了到多平台的移植(通過像 Standard Widget Toolkit(SWT)這樣的軟件包),並管理整個軟件開發生命周期 —— 從第一行 代碼到生產系統的監視。
Eclipse V3.1
在 2005 年 6 月,歷經了一整年的開發之後,Eclipse 基金會發布了一個有 重大意義的 Eclipse 新版本:V3.1。新發行版中的改進涉及的范圍從核心 Eclipse 平台到 Eclipse JDT 和 Eclipse 插件開發環境(PDE)(開發擴展 Eclipse 的軟件的完整環境)。如果您使用 Eclipse 時間不長,或者根本沒有 用過,那麼 V3.1 值得仔細研究。
Eclipse V3.1 中的新特性 —— 不論大小 —— 包括:
更好的性能在 V3.1 問世之前,Eclipse 有著遲緩的名聲。為了解決許多開 發人員的顧慮,新版本開發過程中有相當多的時間和精力都花在了對平台的優化 上,結果相當令人滿意。在 V3.1 中,Eclipse 的內存占用更少,整個 Eclipse 平台速度更快,跨各種平台(包括 Mac OS X、Windows 和 Linux)的響應性更好 。而且,平台處處都加上了工具,從而使性能的下降(或提高)更透明直觀。
例如,圖 1 中顯示了一些 Eclipse V3.1.1、最新的維護發布版的評測結果 。
圖 1. Eclipse V3.1.1 的部分性能標准測試
類似的圖表對於 Eclipse 的後續發行版也存在,甚至包括軟件的 nightly builds 版。在 Eclipse 的 Web 站點上可以查看更多標准測試結果。
更智能化的幫助Eclipse V3.1 包含上下文敏感的全新動態幫助系統,能夠跟 上用戶從一個任務到另一個任務的變化腳步。從一個視圖轉到另一個視圖 —— 甚至從一代碼到另一行代碼,動態幫助視圖都會更新,為當前的任務提供最相關 的主題和文檔列表。增強的可用性大大小小的變化讓 Eclipse 平台用起來更簡 單。例如,整個平台現在支持雙向語言,可以使用關鍵字過濾首選項或屬性 — — 不必在長長的列表中亂翻(圖 2 顯示了與關鍵字 tab 匹配的首選項),可 以一次導入多個項目,甚至能從 tar 或 zip 檔案導入,插件安裝也簡單到只要 安裝一個 jar 文件,然後新的安裝向導就會自動安裝插件的全部相關項。
圖 2. 搜索所有與 tab 有關的首選項面板
J2SE V1.5
除了以上列出的許多好處之外,所有在 J2SE V1.5 中能發現的新的 Java 語 言增強在 Eclipse V3.1 中都支持,包括泛型、自動裝箱、增強的 for 循環、 注釋、枚舉類型(enums)以及其他。J2SE V1.5 不僅擴展了 Java 語言,而且 它的許多特性還讓編程語言更具類型安全性,使得編譯時錯誤和運行時錯誤更少 。
例如,清單 1 演示了一些 J2SE V1.5 的新特性:
清單 1. J2SE V1.5 的新特性
package demo;
import java.util.ArrayList;
public class Shapes {
public enum Shape {
SQUARE (2),
CIRCLE (1),
TRIANGLE (3);
private final Integer data;
Shape(int i) {
this.data = i;
}
public int value() {
return this.data;
}
}
public static void main(String[] args) {
ArrayList<Shape> a = new ArrayList<Shape> ();
for (Shape s: Shape.values()) {
a.add(s);
}
for (int i = 0; i < a.size(); i++) {
Shape s = a.get(i);
double perimeter = 0;
switch (s) {
case SQUARE:
perimeter = s.value() * 4;
break;
case CIRCLE:
perimeter = s.value() * 3.14159;
break;
case TRIANGLE:
perimeter = s.value() * 3;
break;
}
System.out.print("The perimeter of a " +
s.value() + "-inch + s + " is " +
perimeter + " inches" );
}
}
}
很快,J2SE V1.5 的新枚舉類型 成為全功能的類,能夠擁有方法、屬性和其 他。自動裝箱 和 自動拆箱 使原語類型可快速提升為兼容類並支持相反的功能 。所以,this.data = i 不要求升級(會在 this.data = new Integer(i) 這樣 的代碼中看到)。
通用集合(例如 ArrayList)現在可以接受類型參數(例如 Shape),把集 合的成員限制在指定類型內。而且,集合返回的類型也是受限的。這樣,像 a.get(i) 這樣的語句不再一定要“降級”或從 Object 類型轉換到 Shape。後 一套特性合起來叫作 泛型。
最後,(Shape s: Shape.values()) 這段代碼是列表成員迭代的一個新的快 捷方式。
這一節提供了 Eclipse V3.1 中的眾多改進的一個簡短列表(為了簡潔)。 上面列出的許多改進以及其他一些改進,都將在本教程中演示。
安裝預備軟件和組件
在開始學習本教程之前,必須安裝和設置 先決條件 中列出的軟件和組件。
安裝 J2SE V1.5 和 J2RE V1.5
下載並安裝 J2SE V1.5 SDK 和 V1.5 J2RE。(如果系統已經有了 J2SE V1.5.0_06 或以上版本,可以跳過這步。)
通常,J2SE SDK 和 JRE 的發布形式是自解壓的二進制文件。安裝(在 Linux)上很容易,就像這樣(假設已經把 J2SE 和 J2RE 包下載到主目錄下) :
% cd ~
% mkdir ~/java
% cd ~/java
% mv ~/jdk-1_5_0_06-linux-i586.bin .
% mv ~/jre-1_5_0_06-linux-i586.bin .
% chmod +x jdk-1_5_0_06-linux-i586.bin \
jre-1_5_0_06-linux-i586.bin
% ./jdk-1_5_0_06-linux-i586.bin
..
% ./jre-1_5_0_06-linux-i586.bin
..
% ls -F
jdk1.5.0_06/ jre1.5.0_06/
安裝 Eclipse V3.1 SDK
下載適合所用平台的 Eclipse V3.1 SDK。可以在 Eclipse Downloads 上找 到 SDK。通常,安裝很容易,只需把 Eclipse .tar.gz 文件釋放到選中的目錄 即可。例如,如果正在使用 Linux,請下載 Eclipse V3.1 SDK 的 tar 包,然 後用以以下命令把它解壓縮到一個目錄,例如 ~/java/:
% cd ~/java
% mv ~/eclipse-SDK-3.1.1-linux-gtk.tar.gz .
% tar zxvf eclipse-SDK-3.1.1-linux-gtk.tar.gz
為了驗證 Eclipse 已經成功安裝,請進入解壓 Eclipse 的目標目錄,確保 java 可執行程序在 PATH 中,並運行 java -jar eclipse/startup.jar。例如 :
% export JAVA_DIR=$HOME/java
% export JAVA_HOME=$JAVA_DIR/jdk1.5.0_06/sdk
% export PATH=$JAVA_HOME/bin
% export CLASSPATH=$JAVA_HOME
% cd $JAVA_DIR
% java -jar eclipse/startup.jar
如果 Eclipse 提示為工作區選擇一個目錄,請輸入 $HOME/java/workspace 。這個目錄將保存在 Eclipse 中創建的所有文件(當然,如果有許多項目,以 後可以創建其他工作區,可能每個工作區包含一個項目。)
泛型編程
J2SE V1.5 為 Java 新增的一個最有價值的特性就是泛型。為了體會泛型的 價值和目的,請看清單 2。
清單 2. 從哈希表插入和提取元素
import java.util.Hashtable;
class Demo
{
public static void main(String[] args)
{
Hashtable h = new Hashtable();
h.put(new Integer(0), "Horse Feathers");
String s = (String) h.get(new Integer(0));
System.out.println(s);
}
}
像這樣的代碼如果反復編寫會很費力(肯定可以證明),而且突出顯示的代 碼行的復雜性則掩飾了它實際上的簡單目的。更糟的是,編譯器捕捉不到不匹配 的類型——例如用 h.get() 檢索出對象之後如果轉換到錯誤的類型。實際上, 向下轉型(downcasting)(沿著對象繼承樹向下轉型的過程,比如從 Object 到 String)是 Java 程序的運行時 bug 的一大源頭。
當然,還可以用固定類型實現自己的哈希表。例如,MyStringHashTable 可 能包裝了通用的 Hashtable,而且只通過 Integer 索引添加了 String 元素。 在這種情況下,MyStringHashTable.put() 和 MyStringHashTable.get() 應當 適當地重新做定義,只接受類型正確的參數,並返回 String。
雖然這樣的 MyStringHashTable 是類型安全的,但它就不再靈活了。要把新 形式的數據保存到哈希表中,就必須在全新的獨立對象中重新創建大多數 MyStringHashTable 代碼。
進入泛型
理想情況下,像 Hashtable 類這樣的東西,應當既靈活 又 嚴格(類型安全 ):例如,鍵和值的類型應當是在初始化的時候參數化,避免類型轉換的需要, 允許編譯器捕獲類型不匹配。而且,實際上,參數化類型也是 Java V1.5 的新 泛型的基礎。
創建和使用泛型
在這一節,使用 Eclipse 及其對泛型的支持創建和優化示例應用程序。
如果還沒啟動 Eclipse,請啟動它,進入工作台創建新項目。要創建新項目 ,請選擇 File > New > Project...。指定 Generics Example 作為項目 名稱,並從 JDI Compliance 區中選擇 5.0(單擊下拉菜單可以找到)。最後, 單擊 Finish。
在新項目中創建 Java 類。請選擇 File > New > Class,輸入 demo 作為包名稱,輸入 Demo 作為類名。選中復選框,生成 public static void main(String[] args) 方法框架。現在,單擊 Finish。
在 Package Explorer 面板中單擊新的 Demo 類,然後把清單 3 的代碼復制 並粘貼到 Demo.java 面板中。
清單 3. 簡單的泛型類
package demo;
class GenericContainer <A>
{
private A data;
public GenericContainer(A data)
{
this.data = data;
}
public A get()
{
return data;
}
}
public class Demo
{
public String storeString(String s)
{
GenericContainer<String> gc =
new GenericContainer<String>(s);
String t = gc.get();
return t;
}
public Integer storeInteger(Integer i)
{
GenericContainer <Integer> gc =
new GenericContainer<Integer> (new Integer(i));
return gc.get();
}
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.storeString("This is a test"));
System.out.println(d.storeInteger(18000));
}
}
按 Ctrl+S 組合鍵保存代碼,並選擇 Run > Run...。出現 Run 對話框時 ,單擊右下角的 Run 按鈕。輸出面板中應產生以下輸出: This is a test
18000
將鼠標指針懸停在 gc.get() 每個調用上。若您懸停在 storeString 中的第 一次使用上,會彈出一個小提示信息,指示 gc.get() 返回一個 String,而懸 停在第二個使用時,會提示實例方法返回了一個 Integer (請參閱圖 3)。
圖 3. 跟蹤一個通用方法調用,查看它返回的類型
現在您知道了為什麼要把泛型添加到 Java 中,以及泛型的工作方式。下面 將介紹 Eclipse V3.1 是如何支持和增強泛型的。
用泛型捕獲錯誤
因為泛型的目的是幫助避免向下轉型錯誤,所以 Eclipse 會標記出可通過泛 型的使用獲益的操作。
例如,請在 Eclipse 中用 5.0 編譯器設置創建下面這個簡短的 Java 應用 程序:
package demo;
import java.util.ArrayList;
public class Demo2 {
public static void main(String[] args) {
ArrayList a = new ArrayList();
a.add(new Integer(1));
}
}
代碼輸入之後,兩個小圖標 —— 一個藍色燈泡和一個警告標記 —— 會出 現在 a.add(...) 的起始行上,如圖 4 所示。如果將鼠標懸停在這個圖標上, 會出現一條消息,提示您 ArrayList 應當參數化。
圖 4. Eclipse 指出更適於使用泛型的時機
類型安全更強的代碼是 ArrayList>Integer< a = new ArrayList>Integer<()。
Eclipse 還提供了重構技術,可以促進泛型的使用。請看清單 4.
清單 4. 將代碼重構為使用泛型
package demo;
import java.util.ArrayList;
import java.util.List;
public class Demo3 {
public class Brother {
private String name;
public Brother(String s) {
name = s;
}
public String get() {
return name;
}
}
public static void main(String[] args) {
Demo3 d = new Demo3();
List l = new ArrayList(3);
l.add(d.new Brother("Groucho"));
l.add(d.new Brother("Harpo"));
l.add(d.new Brother("Chico"));
l.add((Brother) l.get(1));
for (int i = 0; i < l.size(); i++) {
Brother b = (Brother) l.get(i);
System.out.println(b.get());
}
}
}
輸入以上代碼後,Eclipse 將使用藍色燈泡和黃色波浪線標記許多行,表示 可以做改進。要將其重構為使用泛型,請選擇 Refactor > Infer Generic Type Arguments。出現下一對話框時,把兩個選項都選中,然後單擊 Preview 按鈕。Eclipse 會展示要做的變化,如圖 5 所示。
圖 5. 在 Eclipse 中預覽重構為使用泛型的情況
Eclipse 重構器不僅對 List 和 ArrayList 進行參數化,而且刪除了 for 循環中的類型轉換。單擊 OK 接受修改。代碼轉換為:
List>Brother< l = new ArrayList>Brother< (3);
...
l.add(l.get(1));
最後,在任何 Eclipse 處理非泛型類型的地方,都能處理泛型類型。例如, 可以安全地把泛型類型改名。
新循環
隨著泛型的加入,Java V5 現在支持 foreach 的一種快捷方式,對列表中的 元素進行迭代。輸出 List l 成員的舊式 for 循環可改寫為一種更干淨的格式 :
for (Brother b: l)
System.out.println(b.get());
就像對許多舊 Java 語言特性一樣,Eclipse V3.1 包含了一個針對 J2SE V1.5 的新 foreach 構造的模板。Eclipse 不僅會生成 foreach 代碼,還會猜 測(根據上下文和位置)要對哪個集合進行迭代。
例如,在最後一個 l.add() 後輸入 fore,然後按下 Ctrl+Space。Eclipse 會把 foreach 模板作為選項提供,並顯示它要生成的代碼,如圖 6 的示。
圖 6. Eclipse 能夠根據上下文自動生成 foreach 循環
選擇推薦的 foreach 模板,生成這個代碼:
for (Brother brother : l) {
}
J2SE V1.5 語言的更多特性
泛型的添加必將減少 Java 代碼中的 bug 數量,而其他 J2SE V1.5 特性無 疑能夠提高您的生產力。
J2SE V1.5 引入了許多可以簡化開發的語言特性。本教程將介紹其中的兩個 :自動裝箱和枚舉類型。
自動裝箱
自動裝箱和自動拆箱提供了簡單、干淨的語法,用來把原語值分配給對象, 以及從對象讀取原語值。例如,在過去,要這樣寫:
public class Box {
public Box(Integer i) {
...
}
}
...
Box o = new Box(new Integer(1));
而現在可以這樣寫:Box n = new Box(2)。更好的是, Eclipse V3.1 能夠 突出顯示自動裝箱和自動拆箱的實例。
要查看這個特性,請將清單 5 復制並粘貼到 Eclipse 中的新類內。
清單 5. 自動裝箱和自動拆箱演示
package demo;
public class Box {
private Integer data;
public Box(Integer i) {
data = i;
}
public Integer get() {
return data;
}
public static void main(String[] args) {
Box o = new Box(new Integer(100));
Box n = new Box(200);
int oi = o.get().intValue();
int ni = n.get();
System.out.println("Your numbers are " + oi
+ " and " + ni);
}
}
請選擇 Windows > Preferences...,再選擇 Java > Editor > Syntax Coloring > Java > Auto(un)boxed Expressions,顯示圖 7 所 示的選項。選擇 Enable,然後選擇 Bold,然後單擊 Apply 和 OK。
圖 7. 突出顯示的裝箱和拆箱實例
在返回 Eclipse 中的類面板時,裝箱的實例 new Box(200) 和拆箱的實例 ni = n.get(),分別按照規范用紅色和粗體標記:
圖 8. 突出顯示的裝箱和拆箱實例
如果想讓編譯器額外為自動裝入和自動拆箱的實例加標記,可選擇 Window > Preferences,然後選 Java > Compiler > Errors/Warnings > J2SE 5.0 Options,再將 Boxing and unboxing conversions 設置成 Warning 或 Error 即可。
請記住,可以在 Preference 對話框的搜索框中輸入關鍵字,從而迅速地找 到任何首選項。例如,選擇 Window > Preferences,然後在搜索框中輸入 boxing。帶有相關選項的面板就會出現,如圖 9 所示。
圖 9. 找到影響自動裝箱和自動拆箱的首選項
枚舉類型
在 Java 語言的這一發行版出現之前,枚舉通常是用手工實現的:
public static final int GROUCHO_MARX = 0;
public static final int HARPO_MARX = 1;
public static final int CHICO_MARX = 2;
public static final int KARL_MARX = 3;
確實非常老套,而且這類人為的枚舉類型不是類型安全的,缺少名稱空間, 是非常 脆弱的,也就是說,修改常量就會帶來巨大的破壞,因為值被編譯到一 個或多個模塊或程序中。如果沒有重新編譯或重新安裝引用這些常量的每個模塊 ,那麼系統的行為就無法預測。
為了修正自寫枚舉的許多問題,J2SE V1.5 添加了一個全功能的類,名為 enum 類型,用來代表枚舉類型。
從最簡單的形式上看,J2SE V1.5 的枚舉類型與其他編程語言中的類似構造 很相似。例如,用現代 Java 語言編寫的功能相同的代碼如下:
public enum Actors {
GROUCHO, CHICO, HARPO, KARL
}
以下代碼將遍歷所有值的列表:
package demo;
public class Demo4 {
public enum Actors {
GROUCHO, CHICO, HARPO, KARL
}
public static void main(String[] args) {
for (Actors actor : Actors.values())
System.out.println("Say hello to " + actor);
}
}
因為枚舉現在是 Java 語言中的類,所以 Eclipse 提供了獨立的對話框來創 建它們。請選擇 File > New > Enum 打開圖 10 所示的對話框。
圖 10. 用 Eclipse 創建新的 Java 枚舉
Java 枚舉也可以比較和序列化。甚至,枚舉還能有方法和屬性,就像其他對 象一樣。所以,前面的 Actors 可以進一步擴展成這樣:
package demo;
public class Demo4 {
public enum Actors {
GROUCHO ("What about this sanity clause?"),
CHICO ("Everyone knows there ain't no such " +
"thing as sanity clause!"),
KARL ("Ugh!"),
HARPO ("Honk! Honk!");
private final String line;
Actors(String s) {
this.line = s;
}
public String line() {return line;}
}
public static void main(String[] args) {
for (Actors actor : Actors.values())
System.out.println(actor.line());
}
}
如果把這段代碼復制粘貼到新的 Eclipse 類 Demo4 中,並運行代碼,即可 看到:
What about this sanity clause?
Everyone knows there ain't no such thing as sanity clause!
Ugh!
Honk! Honk!
若 Outline 視圖處於打開狀態,Eclipse 會提供新枚舉的概要視圖,如圖 11 所示。
圖 11. 新的 Java 枚舉類型類的概要
其他出色的特性
除了提高編程的速度和准確性之外,Eclipse V3.1 還添加了許多特性,當您 在 Eclipse 界面中導航時,可為您提供協助。上文中已提及的有:可以搜索許 多 Eclipse 首選項面板,根據關鍵字找到屬性;在編輯器中可以突出顯示多種 語言構造,讓代碼更具可讀性。
還有一些便利之處可能會給您帶來一些幫助。
快捷鍵
在任何 Eclipse 編輯器或視圖中,按 Ctrl+Shift+L 即可看到可用的快捷鍵 (key binding)的完整列表。例如,在 Java 編輯器中,按 Ctrl+Shift+L 會 顯示出一個長長的特性列表,可以直接通過鍵盤使用(請參閱圖 12)。
圖 12. 按下 Ctrl+Shift+L 顯示所有快捷鍵
在 General > Keys 首選項頁面中也可以找到快捷鍵的列表。(也在以在 快捷鍵列表中用 Ctrl+Shift+L 直接打開這個頁面,如圖 12 底部的提示所示。 )
動態幫助
因為 Eclipse 如此流暢地整合了這麼多工具,所以只要輕點鼠標,即可方便 地從一個編輯器切換到分析器或項目編輯器。Eclipse V3.1 中的幫助系統已改 進,可以跟得上您工作的腳步。
如果按下 F1 或從菜單中選擇 Help > Dynamic Help,那麼 Eclipse 會 顯示上下文敏感的幫助面板,隨著在任務之間的切換,幫助內容也會發生動態變 化。幫助視圖如圖 12 所示。
圖 13. Eclipse 的動態幫助系統
打開一個 Java 文件或本教程中的示例,並單擊不同的行。您可以看到幫助 視圖會根據上下文發生變化。在進行以下幾節的學習時,請保持幫助視圖打開。
注釋
J2SE V1.5 的注釋允許把 Java 類類型和方法的元數據附加到源代碼。然後 注釋就可以影響編譯過程(甚至可以在運行時查詢注釋)。
如果沒有打開自動裝箱和自動拆箱的編譯器報警,現在請打開,而且如果必 要,請重新打開自動裝箱的示例代碼。報警打開後,自動裝箱和自動拆箱的實例 就會被加上標記。
點擊第一個警報圖標。應當得到兩個選項:一個是把常量 200 釋放到本地變 量,另一個是添加 @SuppressWarnings 'boxing' 注釋到 main()。請選擇後者 。代碼變成這樣:
@SuppressWarnings("boxing")
public static void main(String[] args) {
...
}
現在,如果重新構建自動裝箱示例,Eclipse 不會生成任何警告,而且前面 顯示的報警圖標也被消除。
像其他語言構造一樣,Eclipse V3.1 能夠自動擴展可用的注釋。例如,在自 動裝箱示例中,把光標放在 get() 方法旁,並輸入 @D,然後按下 Ctrl+Space 。在選項列表中,選擇注釋 @Deprecated,它表示這個方法已經作廢了(也就是 說,編寫了更好的 get() 方法或者不再支持這個 get() 方法)。
根據首選項,get() 方法的名稱在它定義的地方和調用這個方法的兩行代碼 中將被廢除(請參閱圖 14)。
圖 14. 注釋方法,表明不再使用該方法
如果幫助視圖仍然打開,請單擊 @Deprecated 注釋,最頂級入口會指向 java.lang.Deprecated 的 Javadoc。
結束語
不論是開發工具、應用程序或者大量的 Java 代碼,Eclipse V3.1 都能提高 您的生產力。它運行在所有最流行的操作系統上 —— 而且運行速度更快 —— 而且仍然在不斷增加巨大的特性集。
實際上,如果您是 Java 開發人員,那麼 Eclipse 的 Java 開發工具和它的 測試和性能工具平台為創建、調試、優化和監視應用程序提供了豐富的工具套件 。Java 2 標准版 V1.5 讓 Java 的類型安全更高、更易使用,而 Eclipse V3.1 則支持和強化了 J2SE V1.5 的所有關鍵構造。
正如從本文演示的幾個示例中可以看到的,在 Eclipse 中編寫 Java 程序是 一件充滿樂趣的工作。