关于java中枚举的两个问题

时间:2013-01-01 00:07:29

标签: java enumeration

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

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

    while(keyStore.aliases().hasMoreElements()) {
        System.out.println(keyStore.aliases().nextElement());
    }
    
  3. 我必须使用:

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

3 个答案:

答案 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