如何为Java Enum编写泛型for循环?

Nic*_*ick 12 java enums for-loop

有没有办法编写一个通用循环迭代任意枚举?例如:

public static void putItemsInListBox(Enum enum, ListBox listbox){
    for(Enum e : enum.values(){
        listBox.addItem(e.toString(), String.valueOf(e.ordinal());
    }
}
Run Code Online (Sandbox Code Playgroud)

您无法执行上述操作,因为Enum类没有像实现的Enum类那样的名为values()的方法.上面的for循环适用于定义为枚举的类.

axt*_*avt 22

它的工作方式与Class传递的方式完全相同:

public static <E extends Enum<?>> void iterateOverEnumsByInstance(E e)
{
    iterateOverEnumsByClass(e.getClass());
}

public static <E extends Enum<?>> void iterateOverEnumsByClass(Class<E> c)
{
    for (E o: c.getEnumConstants()) {
        System.out.println(o + " " + o.ordinal());
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

enum ABC { A, B, C }
...
iterateOverEnumsByClass(ABC.class);
iterateOverEnumsByInstance(ABC.A);
Run Code Online (Sandbox Code Playgroud)