首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDK 1.5 新特性全解析:泛型、增強 for 迴路、自動裝箱/拆箱、枚舉、可變參數、靜態導入

     編輯:Java 相關知識

核心主題:簡化開發、提升程式碼清晰度與安全性

JDK 1.5 (代號 Tiger) 引入六大特性,協助開發者撰寫更清晰、精簡、安全的程式碼。

1. 泛型

C++ 模板可指定集合元素型別,Java 1.5 前集合只能存 Object,取出需強制轉型。泛型提供編譯期型別檢查:

Collection<String> c = new ArrayList<String>();
c.add(new Date());  // 編譯錯誤:add(String) cannot be applied to (Date)

2. 增強 for 迴路

簡化集合遍歷,避免迭代器與強制轉型:

// 傳統寫法
void processAll(Collection c) {
    for (Iterator i = c.iterator(); i.hasNext(); ) {
        MyClass obj = (MyClass) i.next();
        obj.process();
    }
}

// 增強 for 迴路
void processAll(Collection<MyClass> c) {
    for (MyClass obj : c) obj.process();
}

3. 自動裝箱/拆箱

  • 裝箱:基本型別 → 包裝類別 (int → Integer)
  • 拆箱:包裝類別 → 基本型別 (Integer → int)

解決集合無法存基本型別痛點:

int a = 3;
Collection<Integer> c = new ArrayList<Integer>();
c.add(a);              // 自動裝箱
Integer b = new Integer(2);
c.add(b + 2);          // 拆箱運算 → 裝箱存入

4. 枚舉

全新參考型別,關鍵字 enum:

public enum Color { RED, WHITE, BLUE }

Color myColor = Color.RED;

// 實用靜態方法
for (Color c : Color.values()) System.out.println(c);
Color c = Color.valueOf("RED");

5. 可變參數

方法可接受同類型可變數量參數(必須為最後一個參數):

public void write(Object... objs) {
    for (Object obj : objs) System.out.println(obj);
}

// 呼叫
write(obj1);
write(obj1, obj2);
write(obj1, obj2, obj3);

反射 API 亦受惠:c.getMethod("test").invoke(c.newInstance()) 取代繁瑣的陣列傳遞。

6. 靜態導入

導入類別的靜態成員(方法、變數),使用時無需類別名稱:

import static java.lang.Math.*;

double r = sin(PI * 2);  // 無需 Math.sin(Math.PI)

注意:過度使用降低程式碼可讀性,建議僅用於頻繁使用的常數與工具方法。

結語

JDK 1.5 正式版即將釋出,開發者可先下載 Beta 版體驗新特性帶來的開發效率提升。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved