Junior
Ce sunt obiectele imutabile?
sobes.tech AI
Răspuns de la AI
Obiecte a căror stare nu poate fi modificată după crearea lor. Orice încercare de modificare duce întotdeauna la crearea unui nou obiect.
Exemple de clase imutabile în Java:
String- Învelișuri primitive (
Integer,Long,Booleanetc.) - Unele colecții (
Collections.unmodifiableList(),ImmutableListdin Guava)
Avantaje:
- Siguranță în fire (nu necesită sincronizare la accesul concurent).
- Ușurință în utilizare (starea obiectului este ușor de înțeles).
- Pot fi utilizate ca chei în HashMap sau elemente în Set (hashCode și equals() nu se schimbă).
- Îmbunătățesc performanța prin caching și reutilizare.
Dezavantaje:
- Crearea unui nou obiect la fiecare modificare poate fi ineficientă pentru modificări frecvente.
Creare proprie:
- Declarați clasa ca
final. - Declarați toate câmpurile ca private și
final. - Nu furnizați metode setter.
- În getters pentru câmpurile mutabile, returnați copii, nu referințe la obiectele originale.
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;
// Creăm o copie pentru a evita modificările externe
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Returnăm o listă inalterabilă
return Collections.unmodifiableList(hobbies);
}
}