Java中,Integer,Long等都是有-127~128的缓存的,利用反射: 可以达到攻击目的
Field value = Integer.class.getDeclaredField("value");
value.setAccessible(true);
value.set(42, 43);
同样,String这个“不变”对象也可以:
Field value = String.class.getDeclaredField("value");
value.setAccessible(true);
value.set("hello!", "cheers".toCharArray());
System.out.println("hello!");