Это немного старый вопрос, но я думал, что внесет свой 2 цента в любом случае, так как эта тема появилась сегодня в разговоре.
Это не совсем ответ Почему нет константы?, но как, чтобы сделать ваши классы неизменными. (К сожалению, у меня еще недостаточно репутации, чтобы опубликовать комментарий к принятому ответу)
Способ гарантировать неизменность объекта - это более тщательно спланировать ваши классы, чтобы быть неизменными. Это требует немного большей осторожности, чем изменчивый класс.
Это восходит к Josh Блоха Effective JavaПункт 15 - Минимизация Изменчивость. Если вы еще не читали книгу, возьмите копию и прочитайте ее несколько раз, я гарантирую, что она будет соответствовать вашему образцу «java game».
В пункте 15 Блоха предлагается ограничить изменчивость классов, чтобы обеспечить состояние объекта.
Цитирую книгу непосредственно:
Непреложным класс просто класс, экземпляры которого не могут быть изменены. Вся информация, содержащаяся в каждом экземпляре, предоставляется при ее создании и фиксируется для времени жизни объекта. Библиотеки платформы Java содержат множество неизменяемых классов, включая String, классы в штучной упаковке и BigInteger и BigDecimal. Для этого есть много веских причин: неизменяемые классы легче разрабатывать, реализовывать и использовать, чем изменяемые классы. Они менее подвержены ошибкам и более безопасны.
Блох затем описывает, как сделать ваши классы неизменны, следуя 5 простых правил:
- Не предоставлять какие-либо методы, которые изменяют состояние объекта (т.е. установщики ака Мутаторов)
- Убедитесь, что класс не может быть расширен (это означает объявление класса как
final
).
- Сделать все поля
final
.
- Сделать все поля
private
.
- Обеспечение эксклюзивного доступа к любым изменяемым компонентам. (путем создания защитных копий объектов)
Для получения более подробной информации я настоятельно рекомендую собрать копию книги.
Здесь * есть * ключевое слово 'const', но нет основной функции. Исправлено соответствующее название и теги. – EJP