J'ai récemment eu l'occasion d'utiliser la liste des immuables de Guava. Quelle est la différence entre immuable et final? Je me posais la question et je l'ai examiné.
-Interdit de changer la valeur de l'objet lui-même ・ Il est possible de changer la destination de référence
・ Il est interdit de changer la destination de référence ・ Il est possible de changer la valeur de la variable elle-même
Maintenant, en Java, vérifions en utilisant String et Mutable StringBuilder typiques d'Immutable.
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"; //Erreur de compilation. De chaîne+Accompagné du changement de la destination de référence.
String s = "ringo";
str = s; //Erreur de compilation
sb.append("apple");
sb = new StringBuilder("ringo"); ///Erreur de compilation. Modifiez la destination de référence.
System.out.println(str);
System.out.println(sb);
}
}
C'est relativement simple comparé de cette façon, mais j'ai mal compris que la valeur de final était invariante, et étonnamment il n'y avait pas d'article japonais, alors je l'ai écrit.
Recommended Posts