Junior
Wat zijn onveranderlijke objecten (immutable)?
sobes.tech AI
Antwoord van AI
Objecten waarvan de toestand niet kan worden gewijzigd nadat ze zijn gemaakt. Bij een wijzigingspoging wordt altijd een nieuw object gemaakt.
Voorbeelden van onveranderlijke klassen in Java:
String- Primitieve wrappers (
Integer,Long,Boolean, enz.) - Sommige collecties (
Collections.unmodifiableList(),ImmutableListvan Guava)
Voordelen:
- Threadveiligheid (vereist geen synchronisatie bij gelijktijdige toegang).
- Gebruiksgemak (gemakkelijk te begrijpen toestand van het object).
- Kan worden gebruikt als sleutels in HashMap of elementen in Set (hun hashCode en equals() veranderen niet).
- Verbeteren de prestaties door caching en hergebruik.
Nadelen:
- Het creëren van een nieuw object bij elke wijziging kan inefficiënt zijn bij frequente wijzigingen.
Eigen creatie:
- Declareer de klasse als
final. - Declareer alle velden privé en
final. - Bied geen setter-methoden aan.
- In getters voor mutable velden, retourneer kopieën in plaats van referenties naar de originele objecten.
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;
// Maak een kopie om externe wijzigingen te voorkomen
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Retourneer een ongewijzigde lijst
return Collections.unmodifiableList(hobbies);
}
}