import java.util.*;
import java.lang.*;
import java.io.*;
import java.lang.reflect.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
doTricky1();
doTricky2();
System.
out.
printf(" 128 + 1 = %d\n",
128+1); }
private static void doTricky1(){
try{
Class iCache
=Integer.
class.
getDeclaredClasses()[0]; Field f
= iCache.
getDeclaredField("cache"); int low=-128;// low 保持不動
int high=1000;//把 cache 從 -128~127 改為 -128~1000
for(int k = 0 , j=low ; k < cacheArray.length; k++)
setFinalStaticValue(f,cacheArray);
f = iCache.getDeclaredField("high");
setFinalStaticValue(f,high);
e.printStackTrace();
}
}
private static void doTricky2(){
try{
Class iCache
=Integer.
class.
getDeclaredClasses()[0]; Field f
= iCache.
getDeclaredField("cache"); f.setAccessible(true);
cacheArray[257]=5; // 128 + 129 = 257
e.printStackTrace();
}
}
private static void setFinalStaticValue
(Field fd,
Object val
){ try{
fd.setAccessible(true);
Field mdfField
= Field.
class.
getDeclaredField("modifiers"); mdfField.setAccessible(true);
//重點是這裡,把 final 屬性拿掉
mdfField.
setInt(fd, fd.
getModifiers() & ~
Modifier.
FINAL); fd.set(null, val);
e.printStackTrace();
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOwogCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJZG9Ucmlja3kxKCk7CgkJZG9Ucmlja3kyKCk7CgkJU3lzdGVtLm91dC5wcmludGYoIiAxMjggKyAxID0gJWRcbiIsMTI4KzEpOwoJfQoJCglwcml2YXRlIHN0YXRpYyB2b2lkIGRvVHJpY2t5MSgpewoJCXRyeXsKCQkJQ2xhc3MgaUNhY2hlPUludGVnZXIuY2xhc3MuZ2V0RGVjbGFyZWRDbGFzc2VzKClbMF07CgkJCUZpZWxkIGYgPSBpQ2FjaGUuZ2V0RGVjbGFyZWRGaWVsZCgiY2FjaGUiKTsKCQkJaW50IGxvdz0tMTI4Oy8vIGxvdyDkv53mjIHkuI3li5UKCQkJaW50IGhpZ2g9MTAwMDsvL+aKiiBjYWNoZSDlvp4gLTEyOH4xMjcg5pS554K6IC0xMjh+MTAwMAoJCQkKCQkJSW50ZWdlcltdIGNhY2hlQXJyYXk9bmV3IEludGVnZXJbaGlnaC1sb3ddOwoJCQlmb3IoaW50IGsgPSAwICwgaj1sb3cgOyBrIDwgY2FjaGVBcnJheS5sZW5ndGg7IGsrKykKCQkJCWNhY2hlQXJyYXlba10gPSBuZXcgSW50ZWdlcihqKyspOwoJCQlzZXRGaW5hbFN0YXRpY1ZhbHVlKGYsY2FjaGVBcnJheSk7CgkJCSAKCQkJZiA9IGlDYWNoZS5nZXREZWNsYXJlZEZpZWxkKCJoaWdoIik7CgkJCXNldEZpbmFsU3RhdGljVmFsdWUoZixoaWdoKTsKCQkgCgkJfWNhdGNoKEV4Y2VwdGlvbiBlKXsKCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKCQl9Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgZG9Ucmlja3kyKCl7CgkJdHJ5ewoJCQlDbGFzcyBpQ2FjaGU9SW50ZWdlci5jbGFzcy5nZXREZWNsYXJlZENsYXNzZXMoKVswXTsKCQkJRmllbGQgZiA9IGlDYWNoZS5nZXREZWNsYXJlZEZpZWxkKCJjYWNoZSIpOwoJCQlmLnNldEFjY2Vzc2libGUodHJ1ZSk7CgkJCUludGVnZXJbXSBjYWNoZUFycmF5PShJbnRlZ2VyW10pZi5nZXQoaUNhY2hlKTsKCQkJY2FjaGVBcnJheVsyNTddPTU7IC8vIDEyOCArIDEyOSA9IDI1NwoJCQkKCQl9Y2F0Y2goRXhjZXB0aW9uIGUpewoJCQllLnByaW50U3RhY2tUcmFjZSgpOwoJCX0KCX0KCQoJcHJpdmF0ZSBzdGF0aWMgdm9pZCBzZXRGaW5hbFN0YXRpY1ZhbHVlKEZpZWxkIGZkLE9iamVjdCB2YWwpewoJCXRyeXsKCQkJZmQuc2V0QWNjZXNzaWJsZSh0cnVlKTsKCQkJRmllbGQgbWRmRmllbGQgPSBGaWVsZC5jbGFzcy5nZXREZWNsYXJlZEZpZWxkKCJtb2RpZmllcnMiKTsKCQkJbWRmRmllbGQuc2V0QWNjZXNzaWJsZSh0cnVlKTsKCQkJLy/ph43pu57mmK/pgJnoo6HvvIzmioogZmluYWwg5bGs5oCn5ou/5o6JCgkJCW1kZkZpZWxkLnNldEludChmZCwgZmQuZ2V0TW9kaWZpZXJzKCkgJiB+TW9kaWZpZXIuRklOQUwpOwoJCQlmZC5zZXQobnVsbCwgdmFsKTsKCQl9Y2F0Y2goRXhjZXB0aW9uIGUpewoJCQllLnByaW50U3RhY2tUcmFjZSgpOwoJCX0KCX0KfQ==