public class start {
public static void main(String[] args) throws Exception{
UnderTest test = new UnderTest();
System.out.println("До рефлекшина : " + test.getA());
Field field = test.getClass().getDeclaredField("nomber");
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(test, 666);
System.out.println("После рефлецшина : " + test.getA());
}
}
class UnderTest{
private final int nomber = 55;
public int getA() {
return nomber;
}
}
输出:反射前:55 反射后:55
您的代码更改
final变量的值只是因为您使用反射来设置值,您还需要使用反射来显示值