Разница между 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
Ответы
Ответ 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;
Надеюсь, это поможет!