使用反射打破枚举修改值

使用反射打破枚举修改值

public class Test {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {

        EnumName enumName = EnumName.A;

        System.out.println(enumName);

        // 类中属性value="value1"
        Class<?> clazz = enumName.getClass();
        Field field = clazz.getDeclaredField("value");
        field.setAccessible(true);
        field.set(enumName,"1234567");

        System.out.println(enumName);
    }
}

enum EnumName {
    // 调用 EnumName 的 private 构造函数并传入参数
    A("value1"),
    B("value2");
    private final String value;

    EnumName(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return this.value;
    }
}