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

J2SE 1.5 Tiger 新特性實戰(三):泛型與增強 for 循環、枚舉類型綜合範例

     編輯:J2SE

前言

本文展示 J2SE 1.5 (Tiger) 三大核心新特性——泛型、增強 for 循環、枚舉類型——的綜合應用範例,含編譯執行指令與輸出結果。

一、 泛型 + 增強 for 循環:型別安全的集合遍歷

package tigers;
import java.util.*;

public class GenericTest {
    public static void main(String[] args) {
        // 泛型宣告:僅允許 String 元素
        List<String> list = new ArrayList<>();
        list.add("aaaaaaaaaaaa");
        list.add("bbbbbbbbbbbbb");
        list.add("cccccccccccccc");
        list.add("ddddddddddddd");
        list.add("eeeeeeeeeeeeeeeee");

        // 增強 for 循環:無需強制轉型,編譯期保證型別安全
        for (String s : list) {
            System.out.println(s);
        }
    }
}

編譯與執行

C:\forms> javac -d c:\forms\web-inf\classes c:\forms\src\GenericTest.java
C:\forms> java -classpath c:\forms\web-inf\classes tigers.GenericTest

輸出結果

aaaaaaaaaaaa
bbbbbbbbbbbbb
cccccccccccccc
ddddddddddddd
eeeeeeeeeeeeeeeee

二、 枚舉類型進階:EnumMap、switch、values() 遍歷

package tigers;
import java.util.EnumMap;

enum Simple1 { A, B, C, D; }

public class SimpleEnum {
    public static void main(String[] args) {
        // 1. 直接列印枚舉常量
        System.out.println(Simple1.A); // 輸出: A

        // 2. values() 遍歷所有常量
        for (Simple1 s : Simple1.values()) {
            System.out.print(s); // 輸出: ABCD
        }
        System.out.println();

        // 3. switch 語句支援枚舉 (case 中直接用常量名,無需類名首碼)
        Simple1 s2 = Simple1.D;
        switch (s2) {
            case A: System.out.print("A"); break;
            case B: System.out.print("B"); break;
            case C: System.out.print("C"); break;
            default: System.out.print(s2); // D
        }
        System.out.println();

        // 4. EnumMap:鍵為枚舉類型的高效 Map 實作
        EnumMap<Simple1, String> map = new EnumMap<>(Simple1.class);
        String str = "something";
        int i = 0;
        for (Simple1 s3 : Simple1.values()) {
            map.put(s3, str += (i++ + " "));
        }
        System.out.println(map); // {A=something0 , B=something0 1 , C=something0 1 2 , D=something0 1 2 3 }

        // 5. 遍歷 EnumMap
        for (Simple1 s4 : Simple1.values()) {
            System.out.println(s4 + " = " + map.get(s4));
        }
    }
}

編譯與執行

C:\tiger> javac -d c:\tiger\cls c:\tiger\src\SimpleEnum.java
C:\tiger> java -classpath c:\tiger\cls tigers.SimpleEnum

輸出結果

A
ABCD
D
{A=something0 , B=something0 1 , C=something0 1 2 , D=something0 1 2 3 }
A = something0
B = something0 1
C = something0 1 2
D = something0 1 2 3

三、 關鍵特性總結

特性核心優勢注意事項
泛型編譯期型別安全、消除強制轉型、程式碼復用型別擦除:運行時泛型資訊丟失,無法 new T()、T[]、instanceof T
增強 for語法簡潔、支援陣列/Collection/Iterable、無索引越界風險無法獲取索引、無法在遍歷中結構性修改集合 (需用 Iterator.remove)
枚舉型別安全、單例保證、可攜帶行為/資料、支援 switch/EnumMap/EnumSet無法繼承其他類 (隱性繼承 Enum)、建構子只能 private、常量隱性 static final
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved