Was sind veränderliche/unveränderliche Objekte und wozu dienen sie?  - 1

„Hallo, Amigo!“

„Hallo, Bilaabo!“

„Heute wird Bilaabo Ihnen von veränderlichen und unveränderlichen Objekten erzählen .

„Objekte, die Sie nach ihrer Erstellung ändern können, werden als veränderbar bezeichnet .“

„Objekte, die nach ihrer Erstellung nicht mehr geändert werden können, werden als unveränderlich bezeichnet .“

„Was bestimmt, ob ich ein Objekt ändern kann?“

„Der Autor einer neuen Klasse kann Objekte dieser Klasse unveränderlich machen. Wenn Sie beispielsweise alle Setter privat machen, verfügt ein Objekt nur über einen Konstruktor und Getter. Das bedeutet, dass es nach der Erstellung nicht mehr geändert werden kann ."

„Und welchen Sinn hätte das?“

„Unveränderliche Objekte haben viele nützliche Eigenschaften, aber ich möchte zwei hervorheben, die fast allen unveränderlichen Objekten gemeinsam sind:“

1) Unveränderliche Objekte sind viel einfacher zu implementieren als veränderliche Objekte.

2) Unveränderliche Objekte können in mehreren Threads gleichzeitig frei verwendet werden.

„Wenn ein Entwickler beschließt, eine unveränderliche Klasse zu schreiben, erstellt er normalerweise sowohl eine veränderbare als auch eine unveränderliche Version der Klasse.“

„Aber welchen Sinn hat es, zwei Klassen statt einer zu schreiben?“

„Manchmal lohnt es sich, wenn eine unveränderliche Version eines Objekts viel einfacher/schneller ist als eine veränderliche. Sie erstellen also zwei Versionen. Es ist ein bisschen wie ArrayList und LinkedList: Beide sind Listen, aber eine ist für bestimmte Zwecke optimiert. und das zweite für andere.“

„Das macht schon mehr Sinn.“

„Es gibt auch rein unveränderliche Klassen, die keine veränderliche Version haben.“

„Aber was ist, wenn ich etwas an einem dieser Objekte ändern muss? Was kann man eigentlich mit einem unveränderlichen Objekt machen?“

„Normalerweise enthalten unveränderliche Klassen verschiedene Methoden, die sich so verhalten, als würden sie das Objekt ändern, aber diese Methoden erstellen einfach ein neues Objekt und geben es zurück, anstatt das Objekt selbst zu ändern.“

"Hier sind einige Beispiele:"

Java-Code Beschreibung
String s = "london";
String s2 = s.toUpperCase();
Als Ergebnis enthält s die Zeichenfolge „london“ und s2 enthält „LONDON“.
Integer i = 1;
Integer j = i;
j++;
Folgendes passiert wirklich:
Integer i = new Integer(1);
Ganzzahl j = i;
j = new Integer(i.getInt()+1);

„Die String-Klasse ist eine unveränderliche Klasse. Alle String-Objekte sind unveränderlich, aber das hält uns nicht davon ab, mit ihnen zu arbeiten. Beispielsweise wandelt die toUpperCase()-Methode der String - Klasse einen String in Großbuchstaben um (d. h. ersetzt alle Kleinbuchstaben). mit Großbuchstaben). Diese Methode ändert jedoch nicht den String selbst, sondern gibt stattdessen einen neuen String zurück. Dieser neue String ist mit dem ersten identisch, außer dass alle Zeichen Großbuchstaben (Großbuchstaben) sind.

„Die Integer-Klasse ist auch eine unveränderliche Klasse. Alle Integer-Objekte sind unveränderlich. Jedes Mal, wenn wir ein Integer-Objekt ändern, erstellen wir tatsächlich ein neues Objekt.“

„Wie interessant! Hurra, Bilaabo.“

„Hurra für mich! Hurra für Bilaabo!“