下面的程序会输出什么?
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
private static java.lang.reflect.Field valueField;
static {
try {
valueField = String.class.getDeclaredField("value");
if (valueField != null) {
valueField.setAccessible(true);
}
valueField.set("Hello World!", "Goodbye ".toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果你认为会输出"Hello World!",你就上当了!实际上该程序会输出"Goodbye "。为什么?自己仔细考虑吧,我已经将程序简化得不能再简了,如果再在上面稍微做点变化估计就更困惑了。