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

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

45 голосов
/ 02 сентября 2011

В чем реальная разница между определениями для 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 .зеленый, 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 .ЖЕЛТЫЙ, Color.GREEN, Color.CYAN, Color.BLUE

Ответы [ 3 ]

66 голосов
/ 02 сентября 2011

Вот сам код:

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

public final static Color RED = red;

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

По сути, нет никакой разницы (за исключением букв).


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

21 голосов
/ 02 сентября 2011

Разницы действительно нет.См. 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;
1 голос
/ 16 августа 2016

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;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...