我注意到我不能使用foreach进行枚举,我想知道为什么?
为什么以下给我无限循环:
while(keyStore.aliases().hasMoreElements()) {
System.out.println(keyStore.aliases().nextElement());
}
我必须使用:
Enumeration e = keyStore.aliases();
while(e.hasMoreElements()) {
System.out.println(e.nextElement());
}
答案 0 :(得分:5)
每次拨打keyStore.aliases()
时,您都会得到一个全新的Enumeration
,指向序列的开头。
答案 1 :(得分:1)
关于您的第一个问题,您可以将foreach
与任何实现Iterable
的类一起使用。 Enumerations
没有,{1998年Iterators
使它们过时了。
答案 2 :(得分:0)
如果条目数量很少,您可以使用
Collections.list(Enumeration)
为您提供ArrayList
,您可以迭代。
http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#list(java.util.Enumeration)