关于java:Color.red和Color.RED之间的区别

Difference between Color.red and Color.RED

setXxx(Color.red)setXxx(Color.red)的定义之间的真正区别是什么?

我在网上找到了以下解释。 这是关于命名约定的吗?

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


代码本身就是:

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

public final static Color RED = red;

大写字母是在JDK 1.4中引入的(为了符合它的命名约定,声明常量必须是大写的)。

实质上,没有任何区别(字母外壳除外)。

如果我真的想要勇敢,那么Oracle可能会疯狂并删除较低容量的常量,但这会破坏JDK 1.4之前编写的所有其他代码。你永远不知道,我建议坚持使用大写字母表示常量。它首先必须被弃用(如Andrew Thompson所述)。


没有什么区别。请参阅Color类:

1
2
3
4
5
6
7
8
9
10
/**
 * 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;


Java以小写形式定义了一些颜色常量名称,这违反了使用大写字母表示常量的命名规则。
下面是红色的代码:

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

后来他们做了相同的颜色,但是大写。

1
public final static Color RED = red;

所以没有什么区别。他们都是一样的,你可以通过代码告诉他们。

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

希望这可以帮助!