Найти в Дзене
DEBAGanov

Java 1323. Отличие Unmodifiable от Immutable

1323. Отличие Unmodifiable от Immutable

Unmodifiable и Immutable - это два разных понятия в контексте Java и они имеют различные свойства и использование.

Unmodifiable (неизменяемый) относится к коллекциям, которые не могут быть изменены после создания. Это означает, что вы не можете добавлять, удалять или изменять элементы в такой коллекции. Однако, сама коллекция может быть изменена, например, вы можете изменить элементы внутри коллекции, но вы не можете изменить саму коллекцию (например, добавить или удалить элементы). Коллекции, созданные с помощью методов Collections.unmodifiableXXX(), являются неизменяемыми.

Immutable (неизменяемый) относится к объектам, которые не могут быть изменены после создания. Это означает, что вы не можете изменить значения полей объекта после его создания. Классы, объявленные с ключевым словом final или поля, объявленные с ключевым словом final, являются неизменяемыми. Неизменяемые объекты обеспечивают безопасность потоков и предотвращают неожиданные изменения состояния объекта.

Таким образом, основное различие между Unmodifiable и Immutable заключается в том, что Unmodifiable относится к коллекциям, которые не могут быть изменены после создания, в то время как Immutable относится к объектам, которые не могут быть изменены после создания.

Примеры использования:

Unmodifiable:

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
List<String> unmodifiableList = Collections.unmodifiableList(list);
unmodifiableList.add("C++"); // Вызовет UnsupportedOperationException

Immutable:

final class Person {
private final String name;
private final int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}
}

Person person = new Person("John", 25);
person.setName("Mike"); // Не допустимо, так как объект неизменяемый

Важно отметить, что Unmodifiable и Immutable не являются взаимозаменяемыми понятиями. Unmodifiable относится к коллекциям, в то время как Immutable относится к объектам.

1606 вопрос-ответ по Java

Курс Spring Framework

Tелеграмм каналDEBAGanov

Мое резюмеDEBAGanov

Если вам понравилось, буду признателен за подписку.