Unveränderlich bedeutet ** unveränderlich **. Mit anderen Worten, eine unveränderliche Klasse ist eine Klasse, deren Instanzinhalt sich nicht ändert (= kann nicht umgeschrieben werden). Das Umschreiben einer unveränderlichen Klasse bedeutet das Neuerstellen einer Instanz (seien Sie vorsichtig, wenn Sie sie verwenden, da sich alte Instanzen ansammeln und die Verarbeitungsgeschwindigkeit verlangsamt, wenn Instanzen während der iterativen Verarbeitung mehrmals erstellt werden. Ich muss). Bei Verwendung einer unveränderlichen Klasse muss überprüft werden, ob der Inhalt geändert wurde und ob der Referenztypwert verwendet wird.
Da sich der Status unveränderlicher Objekte ab dem Zeitpunkt der Erstellung nicht ändert, müssen Sie sich keine Sorgen machen, dass sich der Wert während der Verarbeitung in unbeabsichtigter Form ändert. Eine typische unveränderliche Klasse ist die String-Klasse.
Um eine unveränderliche Klasse zu erstellen, müssen die folgenden vier Bedingungen erfüllt sein.
** 1. Deklariere die Klasse als endgültig **
** 2. Machen Sie alle Felder endgültig und privat ** Deklarieren Sie die Klasse als final oder machen Sie den Konstruktor privat und instanziieren Sie ihn mit einer Factory-Methode
** 3. Setter nicht definieren ** Deklarieren Sie die Klasse als final oder machen Sie den Konstruktor privat und instanziieren Sie ihn mit einer Factory-Methode
** 4. Das Feld enthält keinen Verweis auf ein mmutable-Objekt **
Fruits.java
public final class Fruits {
private final String color;
private final int amount;
public Fruits(String name, String, int age) {
this.name = color;
this.age = amount;
}
public String getColor() {
return color;
}
public int getAmount() {
return amount;
}
}
Der Versuch, eine Änderung vorzunehmen, führt zu einem Fehler.
FruitsTest.java
@Test
public void fruitsTest() {
final Person Fruits = new Fruits("Red", 28);
// error
// fruits.setColor("yellow");
// fruits.amount(30);
}