Junior
Was sind unveränderliche Objekte (immutable)?
sobes.tech KI
Antwort von AI
Objekte, deren Zustand nach der Erstellung nicht geändert werden kann. Bei einem Änderungsversuch wird immer ein neues Objekt erstellt.
Beispiele für unveränderliche Klassen in Java:
String- Primitive Wrapper (
Integer,Long,Booleanusw.) - Einige Sammlungen (
Collections.unmodifiableList(),ImmutableListaus Guava)
Vorteile:
- Thread-Sicherheit (benötigt keine Synchronisation bei gemeinsamem Zugriff).
- Einfachheit in der Verwendung (leicht verständlicher Zustand des Objekts).
- Können als Schlüssel in HashMap oder Elemente in Set verwendet werden (ihre hashCode und equals() ändern sich nicht).
- Verbessern die Leistung durch Caching und Wiederverwendung.
Nachteile:
- Die Erstellung eines neuen Objekts bei jeder Änderung kann ineffizient sein bei häufigen Änderungen.
Eigene Erstellung:
- Klasse als
finaldeklarieren. - Alle Felder privat und
finaldeklarieren. - Keine Setter-Methoden bereitstellen.
- Bei veränderlichen Feldern in Gettern Kopien zurückgeben, nicht Referenzen auf die Originalobjekte.
public final class ImmutablePerson {
private final String name;
private final int age;
private final List<String> hobbies;
public ImmutablePerson(String name, int age, List<String> hobbies) {
this.name = name;
this.age = age;
// Kopie erstellen, um Änderungen von außen zu vermeiden
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Unveränderliche Liste zurückgeben
return Collections.unmodifiableList(hobbies);
}
}