Ответ
Иммутабельными в Java являются объекты классов, состояние которых нельзя изменить после создания. Примеры:
String— после создания строку нельзя изменить (методы типаsubstring()возвращают новую строку)- Классы-обёртки (
Integer,Double,Booleanи т.д.) LocalDate,LocalTime,ZonedDateTimeиз пакетаjava.timeBigInteger,BigDecimal- Коллекции из
Collections.unmodifiableXXX()
Пример иммутабельного класса:
public final class ImmutablePoint {
private final int x;
private final int y;
public ImmutablePoint(int x, int y) {
this.x = x;
this.y = y;
}
// Только геттеры, нет сеттеров
} Ответ 18+ 🔞
А, ну ты про эти штуки, которые как гранитный хуй — создал и нихуя не сдвинешь! Иммутабельные, блядь, объекты в Java. Это такие, которые после своего рождения стоят как вкопанные, и хоть ты тресни, их состояние не поменяешь.
Вот смотри, классический пример — это наш всеми любимый String. Ты думаешь, substring() или toUpperCase() меняют строку? Да хуй там плавал! Они просто выдают тебе новую, свежую строку, а старая так и лежит в памяти, как святой дух, неприкосновенная. Пытаться её изменить — это как пытаться перекрасить стену взглядом, ёпта.
Дальше идут эти, как их... классы-обёртки. Integer, Double — все эти ребята. Создал ты циферку 42, и всё, пиздец. Она теперь вечность будет 42, хоть в жопу себе впендюрь. Или даты из java.time — LocalDate. Поставил на календаре "завтра", так оно и останется "завтра", даже если ты уже проебал все дедлайны.
А ещё есть BigInteger и BigDecimal. Ну, для тех, у кого цифры такие огромные, что овердохуища. И их тоже не сломаешь.
И коллекции! Если завернёшь свою List в Collections.unmodifiableList(), то получишь, по сути, музейный экспонат. Смотреть можно, а трогать — хуй тебе, а не изменение. Попробуй добавить элемент — получишь исключение, как по ебалу.
Вот, смотри, как самому такого монстра слепить. Класс ImmutablePoint:
public final class ImmutablePoint {
private final int x;
private final int y;
public ImmutablePoint(int x, int y) {
this.x = x;
this.y = y;
}
// Только геттеры, нет сеттеров
}
Видишь? Класс final — чтобы никто, сука, не унаследовался и не накостылял. Поля final — прикипели намертво, как говно к ворсу. И только геттеры! Никаких сеттеров, блядь! Создал точку с координатами (5, 10) и сиди теперь с ней до скончания времён. Хочешь точку в другом месте? Создавай новый объект, хитрая жопа! Вот и вся философия.