Есть ли неизменяемые объекты помимо строк в Java?

Я только слышал, что строки в Java не могут быть неизменными, и мне было интересно, есть ли другие объекты, кроме строк, которые также являются неизменяемыми?

Кстати, строки в C ++ тоже неизменны?

0

Решение

Многие из примитивных типов являются неизменяемыми (Integer, Long, Boolean и т. Д.). Неизменность — это не то, что явно указано в Java, это действительно семантический контракт. Вы можете сделать любой класс неизменяемым, объявив его члены финальными, назначив их при конструировании и заблокировав доступ через открытый интерфейс класса.

Строка в C ++ — это массив символов, заканчивающийся нулевым символом. Вот и все. Это не обещает неизменности, хотя использование const может помочь заблокировать доступ.

Я предполагаю, что смысл в том, что многие вещи в Java неизменны, но только документация и источник могут доказать это вам.

3

Другие решения

Все примитивы в штучной упаковке, например, Integer, являются неизменяемыми.

Вы можете создавать неизменяемые классы самостоятельно — например, класс, который устанавливает свои переменные, используя свой конструктор, и не имеет открытых переменных или сеттеров.

1

По вопросам рекламы [email protected]