为什么我不能在Java枚举上使用foreach?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (35)

为什么我不能这样做:

Enumeration e = ...
for (Object o : e)
  ...
提问于
用户回答回答于

因为Enumeration<T>不扩展Iterable<T>。这是一个制作Iterable Enumerations例子

至于为什么这是一个有趣的问题。这不完全是你的问题,但它可以揭示一些问题。从Java Collections API设计常见问题解答

为什么Iterator不能扩展枚举? 我们将Enumeration的方法名称视为不幸。它们很长,而且使用频率很高。鉴于我们正在增加一种方法并创建一个全新的框架,我们认为不利用机会改进名称是愚蠢的。当然,我们可以在Iterator中支持新名称和旧名称,但这似乎不值得。

这基本上暗示了Sun希望将自己与Enumeration区分开来,Enumeration是非常早期的Java,具有相当冗长的语法。

用户回答回答于

使用集合实用程序类,Enumeration可以像下面这样进行迭代:

Enumeration headerValues=request.getHeaders("mycustomheader");
List headerValuesList=Collections.list(headerValues);

for(Object headerValueObj:headerValuesList){
 ... do whatever you want to do with headerValueObj
}

扫码关注云+社区