String が Java で不変であることは誰もが知っています。文字列が作成されると、コンテンツは変更できません。
文字列は文字配列を使用して文字char[] value
列コンテンツを格納します。ここにJavaコードがあります-
/** The value is used for character storage. */
private final char value[];
フィールドへのアクセス権を取得しvalues[]
て変更したらどうなるでしょうか? このコードを参照してください -
String name = "Harish";
System.out.println(name); // Harish
Field field = name.getClass().getDeclaredField("value");
field.setAccessible(true);
char[] value = (char[]) field.get(name);
value[0] = 'G';
value[1] = 'i';
System.out.println(Arrays.toString(value)); // [G, i, r, i, s, h]
System.out.println(name); // Girish
このようにして、String Immutability Principleに反する文字列の内容を変更できると思います。
私は何かを逃していますか?