Junior
Mi az az immutable (változtathatatlan) objektum?
sobes.tech MI
Válasz az MI-től
Az objektumok, amelyek állapota a létrehozásuk után nem módosítható. A módosítási kísérlet mindig új objektum létrehozását eredményezi.
Java-ban az immutábilis osztályok példái:
String- primitív burkolók (
Integer,Long,Booleanstb.) - Néhány kollekció (
Collections.unmodifiableList(), GuavaImmutableList)
Előnyök:
- Szálbiztonság (nem igényel szinkronizációt egyidejű hozzáférés esetén).
- Egyszerű használat (az objektum állapota könnyen érthető).
- Kulcsként használhatók HashMap-ben vagy Set elemeként (hashCode és equals() nem változik).
- Javítják a teljesítményt cache-elés és újrafelhasználás révén.
Hátrányok:
- Az új objektum létrehozása minden módosításnál hatékonytalan lehet gyakori változások esetén.
Saját létrehozás:
- Jelölje a osztályt
final-ként. - Minden mezőt privát és
final-ként deklaráljon. - Ne biztosítson setter metódusokat.
- Mutató mezőknél a getterben másolatokat adjon vissza, ne az eredeti objektumokra mutató hivatkozásokat.
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;
// Másolat készítése külső változtatások elkerülése érdekében
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Nem módosítható lista visszaadása
return Collections.unmodifiableList(hobbies);
}
}