Kod:Jak działa ten statyczny kod?
public static void main (String[] args){
String a = new String("Hello");
String b = " pardner.";
System.out.println(a+b);
System.out.println("a.equals(\"Hello\") --> " + (a.equals("Hello")));
System.out.println("a --> " + a);
}
static {
try {
Field value = String.class.getDeclaredField("value");
value.setAccessible(true);
value.set("Hello", value.get("Howdy"));
} catch (Exception e) { }
}
Wynik:
Howdy pardner.
a.equals("Hello") --> true
a --> Howdy
jaki sposób ta zmiana kodu "Hello" na "Cześć" podczas drukowania?
Wykorzystuje odbicie zastąpić każdy łańcuch, który jest „Hello” z „Cześć”. –
To * naprawdę * interesujące! Zauważ, co stanie się, jeśli utworzysz 'String a' * final *. Musi to być jakaś forma optymalizacji kompilatora. –
Powiązane: [1] (http://stackoverflow.com/q/8086065/1391249), [2] (http://stackoverflow.com/q/20036436/1391249) – Tiny