Java中枚举怎么遍历

Python013

Java中枚举怎么遍历,第1张

我们可以通过反射, 以及枚举类的静态方法values()来进行遍历:代码:enum Rating {UNRATED, G, PG, PG13, R, NC17}public class Test {public static void main(String args[]) {System.out.println("第一种通过反射") Class clz = Rating.class for (Object obj: clz.getEnumConstants()) {System.out.println(obj) }System.out.println("第二种通过枚举静态方法values()") for (Rating rate: Rating.values()) {System.out.println(rate) }}}运行结果:第一种通过反射UNRATEDGPGPG13RNC17第二种通过枚举静态方法values()UNRATEDGPGPG13RNC17

public class Test {

public enum ColorSelect {

red, green, yellow, blue

}

private static ColorSelect getE()

{

ColorSelect c=ColorSelect.blue

return c

}

public static void main(String[] args) {

Object o=getE()

if(o instanceof Enum)

{

System.out.println(o)

}

}

}

可以:public final class HelloWorld{ private static HelloWorld instance = nullprivate HelloWorld() { } public static HelloWorld getInstance() { if (instance == null) { instance = new HelloWorld()} return instance} public void sayHello() { System.out.println("hello world!!")} public static void sayHello2() { System.out.println("hello world 222 !!")} static class Test { public static void main(String[] args) throws Exception { try { Class class1 = Class.forName("HelloWorld")Constructor[] constructors = class1.getDeclaredConstructors()AccessibleObject.setAccessible(constructors, true)for (Constructor con : constructors) { if (con.isAccessible()) { Object classObject = con.newInstance()Method method = class1.getMethod("sayHello")method.invoke(classObject)} } } catch (Exception e) { e.printStackTrace()} } }}effective java中第三条就说了这种方式。还强调枚举才是单例的王道。