Этот вопрос о том, почему константы в Java являются прописными условно, заставил меня попытаться думать о встречных примерах.
Я могу думать о по крайней мере одном (Double.NaN
). Есть ли другие?
Есть много serialVersionUID
!
Другие в ResultSetMetaData
, такие как columnNoNulls
, columnNullable
...
DatabaseMetaData
и ICC_Profile
, содержат много смешанных константы case.
Вот список с большинством, если не всеми, константами JavaSE: Значения полей констант
Конечно, общедоступный конечный статический PrintStream out
(в java.lang.System.out
). Но это очень хорошее исключение, потому что System.OUT.println
просто уродлив.
Кроме того, большинство регистраторов времени инициализируются следующим образом:
private static final Logger logger = Logger.getLogger(MyClass.class);
Однако в обоих случаях они не являются константами в истинном смысле этого слова. Так что, возможно, мы можем провести различие:
Поля, которые являются статическими
, потому что им нужен статический доступ, и final
, потому что их не следует переназначать во время выполнения, не обязательно константы .
java.util.logging.Logger.global - константа со строчными буквами
null
, true
и false
. Возможно, это ключевые слова, но если разобраться, это константы, оцениваемые в 0x00, 0x01 и 0x00 соответственно.
Длина
экземпляров массива.
Между прочим, я вижу упомянутые примеры объектов, которые являются «постоянными» в одном отношении, а именно, их ссылка не изменяется - ссылка является конечной статикой, но когда эти объекты активны; т.е. их внутренние атрибуты меняются при вызове методов для этих объектов. В этих случаях я бы не стал использовать соглашение об именах ВЕРХНИЙ РЕГИСТР, поскольку, на мой взгляд, объекты не являются константами.
Цветовые константы, такие как черный, красный, зеленый и т. Д. Из класса java.awt.Color .
Следует отметить, что java.awt.Color также предоставляет варианты прописных букв (например, ЧЕРНЫЙ, КРАСНЫЙ, ЗЕЛЕНЫЙ и т. Д.) Этих констант.