使用反射得到枚举的属性

import java.lang.reflect.Field;

enum E0 {
    A, B
}

enum E1 {
    A, B
}

class ETest {
    private E0 fld = E0.A;
}

public class EnumTroubleToo {
    public static void main(String... args) {
        try {
            ETest test = new ETest();
            Field f = test.getClass().getDeclaredField("fld");
            f.setAccessible(true);
            f.set(test, E1.A); // IllegalArgumentException

            // production code should handle these exceptions more gracefully
        } catch (NoSuchFieldException x) {
            x.printStackTrace();
        } catch (IllegalAccessException x) {
            x.printStackTrace();
        }
    }
}

你可能感兴趣的:(使用反射得到枚举的属性)