Я использую шаблон public-final-field (anti?) для домашних проектов для классов, которые в основном представляют собой неизменяемую структуру данных с конструктором, а также абсолютные основы, такие как equals (), hashCode (), toString () и т. д. . если необходимо. (Я избегаю слова «struct» из-за различных интерпретаций языка.)
Я бы не применил этот подход к чужой кодовой базе (работа, публичный проект и т. Д.), Потому что это вероятно, будут несовместимы с другим кодом, и такие принципы, как «Когда в Риме» или «Меньший сюрприз», имеют приоритет.
Тем не менее, в отношении ответов Даниэля С. Собраля и айооу, мое отношение состоит в том, что если классный дизайн становится проблема из-за непредвиденных событий, это работа 30 секунд в среде IDE для приватизации полей и добавления аксессуаров и не более 5 или 10 минут для исправления неработающих ссылок, если их не будет сотни. Все, что терпит неудачу, в результате получает единичный тест, который должен был иметь в первую очередь. :-)
[Edit: Эффективная Java довольно решительно против этой идеи, отмечая, что она «менее вредна» на неизменяемые поля.]
Для обеспечения полной поддержки Unicode и обратимости рассмотрите использование:
'\n'.codePointAt(0);
Это гарантирует, что при тестировании символов по пределу UTF-16, Вы получите их истинное значение кодовой точки.
, например,
'