这个 Java 代码片段是如何工作的?(字符串池和反射)
2022-08-31 11:51:03
Java字符串池与反射相结合,可以在Java中产生一些难以想象的结果:
import java.lang.reflect.Field;
class MessingWithString {
public static void main (String[] args) {
String str = "Mario";
toLuigi(str);
System.out.println(str + " " + "Mario");
}
public static void toLuigi(String original) {
try {
Field stringValue = String.class.getDeclaredField("value");
stringValue.setAccessible(true);
stringValue.set(original, "Luigi".toCharArray());
} catch (Exception ex) {
// Ignore exceptions
}
}
}
以上代码将打印:
"Luigi Luigi"
马里奥怎么了?