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

Enumeration (迭代器) 基礎:統一遍歷介面與型別擦除挑戰

     編輯:Java 相關知識

為何需要迭代器?

直接使用集合具體類別 (如 Vector 的 elementAt()) 導致客戶代碼綁定具體實作。若後續換用 List (Java 1.2),需大幅修改代碼。Enumeration 提供統一遍歷抽象,屏蔽底層結構差異。

Enumeration 三大核心操作

  1. elements() 獲取 Enumeration。
  2. nextElement() 取得下一個元素 (返回 Object)。
  3. hasMoreElements() 判斷是否結束。

命名歷史包袱:C++/OOP 慣稱 Iterator,Java 1.2 修正為 Iterator 並簡化方法名。

範例重構:從索引遍歷到枚舉遍歷

// 舊版:綁定 Vector
for (int i=0; i

優勢:無需關心元素數量,hasMoreElements()/nextElement() 自動處理邊界。

通用列印工具與型別擦除

static void printAll(Enumeration e) {
    while (e.hasMoreElements())
        System.out.println(e.nextElement().toString()); // 僅依賴 Object.toString()
}

更簡潔寫法:System.out.println("" + e.nextElement()) 利用編譯器自動轉字串 (調用 toString()),或強制造型 (String)e.nextElement()。

型別安全痛點

實際開發常需調用特定方法,必須假定 Enumeration 元素型別並造型:

((MyType)e.nextElement()).myMethod(); // 造型錯誤 → 運行時 ClassCastException

這是 Java 1.2 泛型 (Iterator) 解決的核心問題:編譯期型別檢查,消除運行時造型風險。

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