Difference between Color.red and Color.RED

JavaColors

Java Problem Overview


What's the real difference between definitions for setXxx(Color.red) and setXxx(Color.RED)?

I've found the following explanation on the web. Is it all about naming conventions?

> Java originally defined a few color constant names in lowercase, which violated the naming rule of using uppercase for constants. They are available in all versions of 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 added the proper uppercase names for constants: 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

Java Solutions


Solution 1 - Java

There's the code itself:

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

public final static Color RED = red;

The upper case letters were introduced in JDK 1.4 (to conform to its naming convention, stating that constants must be in upper-case).

In essence, there are no difference at all (except letter casing).


If I want to really be brave, Oracle might go wild and remove constants that is lower-cased, but then that would break all other code that's written pre-JDK 1.4. You never know, I would suggest sticking to uppercase letters for constants. It first has to be deprecated though (as mentioned by Andrew Thompson).

Solution 2 - Java

There is really no difference. See the Color class:

/**
 * 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;

Solution 3 - Java

Java defined some color constant names in lowercase, which violated the naming rule of using uppercase for constants. Heres the code for the color red:

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

Later on they made the same colors but in uppercase.

public final static Color RED = red;

So there is really no difference. They are all the same, as you can tell by the code.

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

Hope this helps!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmKorbelView Question on Stackoverflow
Solution 1 - JavaBuhake SindiView Answer on Stackoverflow
Solution 2 - JavaJan ZykaView Answer on Stackoverflow
Solution 3 - JavaArtem KaterynychView Answer on Stackoverflow