1
  1. 我注意到我不能使用 foreach 进行枚举,我想知道为什么?

  2. 为什么以下给了我无限循环:

    while(keyStore.aliases().hasMoreElements()) {
        System.out.println(keyStore.aliases().nextElement());
    }
    

我必须使用:

Enumeration e = keyStore.aliases();
while(e.hasMoreElements()) {
    System.out.println(e.nextElement());
}
4

3 回答 3

5

每次调用 时,都会得到一个指向序列开头的keyStore.aliases()全新。Enumeration

于 2013-01-01T00:08:52.983 回答
1

关于您的第一个问题,您可以foreach与任何实现Iterable. Enumerations不要,它们Iterators在 1998 年就已经过时了。

于 2013-01-01T00:29:08.370 回答
0

如果条目数量很少,您可以使用

Collections.list(Enumeration)这给了你一个ArrayList你可以迭代的东西。

http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#list(java.util.Enumeration )

于 2013-01-01T00:34:46.973 回答