Ich hatte kürzlich die Gelegenheit, Guavas unveränderliche Liste zu verwenden. Was ist der Unterschied zwischen unveränderlich und endgültig? Ich habe mich gefragt und es untersucht.
-Verbieten Sie, den Wert des Objekts selbst zu ändern ・ Das Referenzziel kann geändert werden
・ Es ist verboten, das Referenzziel zu ändern ・ Es ist möglich, den Wert der Variablen selbst zu ändern
Lassen Sie uns nun in Java die Verwendung von Immutable's typischem String und Mutable StringBuilder überprüfen.
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
final String str = "apple";
final StringBuilder sb= new StringBuilder("ringo");
str = str + "ringo"; //Kompilierungsfehler. Von String+Begleitet durch Ändern des Referenzziels.
String s = "ringo";
str = s; //Kompilierungsfehler
sb.append("apple");
sb = new StringBuilder("ringo"); ///Kompilierungsfehler. Ändern Sie das Referenzziel.
System.out.println(str);
System.out.println(sb);
}
}
Es ist relativ einfach, auf diese Weise zu vergleichen, aber ich habe falsch verstanden, dass der Wert von final unveränderlich war, und überraschenderweise gab es keinen japanischen Artikel, also habe ich ihn geschrieben.
Recommended Posts