我刚刚在研究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。
请问有人能够解释一下代码中发生了什么吗?