Подтвердить что ты не робот

Разница между Color.red и Color.RED

Какая реальная разница между определениями для setXxx(Color.red) и setXxx(Color.red)?

Я нашел следующее объяснение в Интернете. Все ли связано с соглашениями об именах?

Java первоначально определила несколько имен констант цвета в нижнем регистре, что нарушило правило именования использования верхнего регистра для констант. Они доступны во всех версиях Java: Color.black, Color.darkGray, Color.gray, Color.lightGray, Color.white, Color.magenta, Color.red, Color.pink, Color.orange, Color.yellow, Color.green, Color.cyan, Color.blue

Java 1.4 добавила правильные имена в верхнем регистре для констант: Color.BLACK, Color.DARK_GRAY, Color.GRAY, Color.LIGHT_GRAY, Color.WHITE, Color.MAGENTA, Color.RED, Color.PINK, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE

4b9b3361

Ответ 1

Вот сам код:

public final static Color red = new Color(255, 0, 0);

public final static Color RED = red;

Буквы верхнего регистра были введены в JDK 1.4 (чтобы соответствовать его именованию, указав, что константы должны быть в верхнем регистре).

В сущности, нет никакой разницы (кроме обложки письма).


Если я действительно хочу быть храбрым, Oracle может пойти на произвол судьбы и удалить константы с более низким уровнем, но тогда это сломает все остальные коды, написанные до JDK 1.4. Вы никогда не знаете, я бы предложил придерживаться заглавных букв для констант. Сначала это нужно осуждать (как упоминалось Эндрю Томпсоном).

Ответ 2

Нет никакой разницы. См. Класс Color:

/**
 * The color red.  In the default sRGB space.
 */
public final static Color red       = new Color(255, 0, 0);

/**
 * The color red.  In the default sRGB space.
 * @since 1.4
 */
public final static Color RED = red;

Ответ 3

Java определила некоторые имена констант цвета в нижнем регистре, что нарушило правило именования использования верхнего регистра для констант. Вот код для красного цвета:

public final static Color red = new Color(255, 0, 0); 

Позже они сделали те же цвета, но в верхнем регистре.

public final static Color RED = red;

Таким образом, нет никакой разницы. Они все одинаковы, как вы можете сказать по коду.

public final static Color red = new Color(255, 0, 0);
public final static Color RED = red;

Надеюсь, это поможет!