Это немного старый вопрос, но я подумал, что все равно внесу свои 2 цента, так как эта ветка возникла сегодня в разговоре.
Это не совсем ответ на вопрос, почему нет const?, но как сделать ваши классы неизменяемыми. (К сожалению, у меня еще недостаточно репутации, чтобы оставлять комментарии к принятому ответу)
Чтобы гарантировать неизменность объекта, нужно более тщательно проектировать классы, чтобы они оставались неизменяемыми. Это требует немного большей осторожности, чем изменяемый класс.
Это восходит к Effective Java правилу 15 Джоша Блоха - Минимизируйте изменчивость. Если вы не читали книгу, возьмите копию и перечитайте ее несколько раз, я гарантирую, что она улучшит вашу образную "java-игру".
В пункте 15 Блох предлагает ограничить изменчивость классов, чтобы гарантировать состояние объекта.
Чтобы процитировать книгу напрямую:
Неизменяемый класс - это просто класс, экземпляры которого нельзя изменить. Вся информация, содержащаяся в каждом экземпляре, предоставляется при его создании и фиксируется на время существования объекта. Библиотеки платформы Java содержат множество неизменяемых классов, включая String, упакованные примитивные классы, а также BigInteger и BigDecimal. Для этого есть много веских причин: неизменяемые классы легче разрабатывать, реализовывать и использовать, чем изменяемые классы. Они менее подвержены ошибкам и более безопасны.
Затем Блох описывает, как сделать ваши классы неизменными, следуя 5 простым правилам:
- Не предоставляйте никаких методов, которые изменяют состояние объекта (т. Е. Сеттеры, также известные как мутаторы).
- Убедитесь, что класс не может быть расширен (это означает объявление самого класса как
final
).
- Сделайте все поля
final
.
- Сделайте все поля
private
.
- Обеспечьте монопольный доступ ко всем изменяемым компонентам. (делая защитные копии объектов)
Для получения дополнительной информации настоятельно рекомендую взять книгу.
person
grego
schedule
07.06.2016
const
, но нет базовой функции. Соответственно исправлены ваш заголовок и теги. - person user207421   schedule 07.03.2016