public class MyClass {public static String CONSTANT = "Original Value";
}
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;public class ModifyFinalFieldExample {public static void main(String[] args) {// 使用反射将 Constants 类中的 FINAL修饰符移除try {Field field = Class.forName("com.shield.MyClass").getDeclaredField("CONSTANT");field.setAccessible(true);Field modifiersField = Field.class.getDeclaredField("modifiers");modifiersField.setAccessible(true);modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);field.set(null, "Initial modified value via reflection");} catch (Exception e) {e.printStackTrace();}// Logging the modified constant's valueSystem.out.println("Modified constant value: " + MyClass.CONSTANT);}
}
运行结果:
Modified constant value: Initial modified value via reflection