我只是探索Java反射API和我遇到下面的代码片断Java反射片段输出
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
我读其中规定所述一组方法的文档,它设置值对于给定对象的字段。但我无法理解代码的输出,因为它应该在所有情况下打印42。
任何人都可以请深入了解代码中发生了什么吗?
http://www.dzone.com/snippets/reflection-integer-destroyer – 2013-05-09 17:01:43