为什么枚举不可迭代?

问题描述

枚举没有被修改支持Iterable,因为它是一个接口,而不是一个具体的类(例如Vector,它被修改支持Collections接口)。

如果将Enumeration更改为支持Iterable,则会破坏很多人的代码

解决方法

在Java 5及更高版本中,您具有foreach循环,该循环可以神奇地实现任何实现的对象Iterable

for (Object o : list) {
  doStuff(o);
}

但是,Enumerable仍然没有实现Iterable,这意味着要迭代一个,Enumeration您必须执行以下操作:

for(; e.hasMoreElements() ;) {
  doStuff(e.nextElement());
}

有谁知道为什么Enumeration仍然不执行Iterable

编辑:
为澄清起见,我不是在谈论枚举的语言概念,而是在Java
API中称为“
枚举
的Java特定类。