Це трохи старе запитання, але я подумав, що все-таки вкладу свої 2 копійки, оскільки ця тема сьогодні з'явилася в розмові.
Це точно не відповідає чому не існує const? але як зробити ваші заняття непорушними. (На жаль, у мене ще недостатньо репутації, щоб розмістити коментар до прийнятої відповіді)
Спосіб гарантувати незмінність об’єкта - це більш ретельно спроектувати свої класи, щоб вони були незмінні. Для цього потрібно трохи більше турбот, ніж клас, що змінюється.
Це повертається до ефективної Java- позиції 15 Джоша Блоха - Мінімізація змінності . Якщо ви ще не читали книгу, візьміть копію та прочитайте її кілька разів, я гарантую, що вона збільшить вашу образну «гру на Java» .
У пункті 15 Bloch пропонують обмежити можливість зміни класів, щоб забезпечити стан об'єкта.
Цитувати книгу безпосередньо:
Незмінний клас - це просто клас, екземпляри якого неможливо змінити. Вся інформація, що міститься в кожному екземплярі, надається при її створенні та фіксується протягом життя об’єкта. Бібліотеки платформи Java містять безліч незмінних класів, включаючи String, примітивні класи в коробці, а також BigInteger та BigDecimal. Для цього є багато вагомих причин: Незмінні класи легше проектувати, впроваджувати та використовувати, ніж класи, що змінюються. Вони менш схильні до помилок і більш безпечні.
Потім Bloch описує, як зробити свої класи незмінними, дотримуючись 5 простих правил:
- Не надайте жодних методів, що змінюють стан об'єкта (тобто сеттери, мутатори ака )
- Переконайтесь, що клас не може бути розширений (це означає оголошення класу як
final
).
- Зробіть усі поля
final
.
- Зробіть усі поля
private
.
- Забезпечте виключний доступ до будь-яких змінних компонентів. (роблячи захисні копії об'єктів)
Для більш детальної інформації я настійно рекомендую забрати примірник книги.
const
ключове слово, але не основна функція. Виправте свою назву та теги відповідно.