2010-02-19 4 views
5

This question о том, почему константы в Java в верхнем регистре по соглашению заставляют меня думать о примерах счетчиков.Константы с прописными буквами в Java

Я могу придумать хотя бы один (Double.NaN). Есть ли другие?

+2

Не должно ли это быть вики-сообществом? – Yuval

+1

Это интересно или полезно? Как это помогает вам или кому-то выполнять свою работу? –

ответ

4

Есть много serialVersionUID!

Другие в ResultSetMetaData как columnNoNulls, columnNullable ...
DatabaseMetaData и ICC_Profile есть много смешанных констант случая.

Вот список с большинством, если не все, JavaSE константы: Constant Field Values

+0

Ссылка на все константы делает это победителем! – JRL

0

null, true и false. Они, возможно, являются ключевыми словами, но когда вы переходите к нему, они являются константами, оценивающими 0x00, 0x01 и 0x00 соответственно.

+5

В C++ возможно, но, конечно, не в java. Нет '(int) null' или' (int) true' – Martin

+1

Также: это литералы, а не ключевые слова. Так же, как '13' является буквальным или' 'foo". –

+0

Вы, вероятно, путаетесь с Boolean.TRUE и Boolean.FALSE, которые являются константами, но в верхнем регистре. – Roman

2

Цветные константы, такие как черный, красный, зеленый и т. Д. От java.awt.Color класс.

Следует отметить, что java.awt.Color также содержит альтернативы верхнего регистра (например, BLACK, RED, GREEN и т. Д.) Этих констант.

2

java.util.logging.Logger.global является константой со всеми строчной

7

Конечно, public final static PrintStream outjava.lang.System.out). Но это очень хорошее исключение, потому что System.OUT.println просто уродливый.

Кроме того, большую часть времени регистраторы инициализируются следующим образом:

private static final Logger logger = Logger.getLogger(MyClass.class); 

Однако в обоих случаях они не являются константами в истинном смысле этого слова. Так что, возможно, мы можем сделать различие:

Поля, static потому что они нуждаются в статический доступ, и final, потому что они не должны быть повторно назначены во время выполнения, не обязательно константы.

+3

Согласен; Я считаю, что константы всегда являются объектами ценности (конечно же, неизменяемыми). –

+0

Согласен. Верхний регистр должен быть зарезервирован для неизменяемых констант *, а не просто для 'static' и' final'. – cdunn2001

0

length экземпляров массива.

Кстати, я вижу примеры, которые упоминаются об объектах, которые являются «постоянными» в одном отношении, а именно их ссылка не изменяется - ссылка является окончательной статикой, но когда эти объекты активны; то есть их внутренние атрибуты изменяются при вызове методов на этих объектах. В таких случаях я бы не использовал соглашение об именах UPPERCASE, поскольку объекты не являются константами в моем представлении.