Color.red 和 Color.RED 之间的区别

2022-08-31 20:31:44

和 的定义之间的真正区别是什么?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之前编写的所有其他代码。你永远不会知道,我建议坚持使用大写字母作为常量。它首先必须被弃用(正如Andrew Thompson所提到的)。


答案 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;