我只是在探索 java 反射 API,我遇到了以下代码片段
public class Main {
public static void main(String[] args) throws IllegalAccessException, NoSuchFieldException{
Field value=Integer.class.getDeclaredField("value");
value.setAccessible(true);
value.set(42, 43);
System.out.printf("six times seven %d%n",6*7);
System.out.printf("six times seven %d%n",42);
System.out.println(42);
}
}
输出 :
six times seven 43
six times seven 43
42
我阅读了 set 方法的文档,其中指出它为给定对象设置字段的值。但我无法理解代码的输出,因为它在所有情况下都应该打印 42。
任何人都可以深入了解代码中发生的事情吗?