Junior
Ним өзгөрүлмө объекттер (immutable) эмне?
sobes.tech AI
AIден жооп
Өзгөртүлбөгөн объекттер, алардын абалы түзүлгөндөн кийин өзгөртүлбөйт. Өзгөртүү аракетинде дайыма жаңы объект түзүлөт.
Javaда өзгөртүлбөгөн класстардын мисалдары:
String- Примитивдүү каптоочулар (
Integer,Long,Booleanжана башка) - Айрым коллекциялар (
Collections.unmodifiableList(), GuavaданImmutableList)
Артыкчылыктары:
- Тиркелүү коопсуздугу (биргелешип кирүүдө синхрондоштуруу талап кылынбайт).
- Колдонуу оңой (объекттин абалы оңой түшүнүктүү).
- HashMapда ачкыч катары же Setте элемент катары колдонулушу мүмкүн (алардын hashCode жана equals() өзгөрбөйт).
- Кэшке жана кайра колдонууга мүмкүнчүлүк берүү менен иштөө ылдамдыгын жакшыртат.
Кемчиликтери:
- Ар бир өзгөртүүндө жаңы объект түзүү эффективдүү болбой калышы мүмкүн көп өзгөрүүлөрдө.
Өзүңүз түзүү:
- Классты
finalдеп жарыялоо. - Бардык талааларды жеке жана
finalдеп жарыялоо. - Setteri методдорду камсыз кылбоо.
- Муттабельдүү талаалар үчүн геттерлерде көчүрмөлөрдү кайтаруу, оригиналдуу объекттерге шилтемелерди эмес.
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;
// Чыгарылуу сырттан өзгөртүүлөрдү алдын алуу үчүн
this.hobbies = new ArrayList<>(hobbies);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
// Өзгөртүлбөгөн тизмени кайтаруу
return Collections.unmodifiableList(hobbies);
}
}