代码如下:
package basic;
import java.lang.reflect.Field;public class TestField { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { @SuppressWarnings("rawtypes") Class cache = Integer.class.getDeclaredClasses()[0]; Field myCache = cache.getDeclaredField("cache"); myCache.setAccessible(true); Integer[] newCache = (Integer[]) myCache.get(cache); newCache[132] = newCache[133]; int a = 2; int b = a + a; System.out.printf("%d + %d = %d", a, a, b); } }
运行结果如下:
2 + 2 = 5
为什么会有这样的输出结果呢?
另外附上内部类IntgerCache的源码如下:
红颜莎娜
相关分类