2011-09-02 325 views
41

setXxx(Color.red)setXxx(Color.RED)的定义之间的实际区别是什么?Color.red和Color.RED之间的区别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

常量的编码约定是UPPER_CASE。使用大写字母表示它是一个常数。 –

+8

红色至少比红色红三倍。而更多的愤怒。 – arserbin3

+2

常量的编码约定是UPPER_CASE,但请注意,RED实际上并不是一个常量,因为它是一种颜色,而不是原始图像,也不是枚举。我认为在讨论代码时人们使用的常量的定义与根据JLS定义的常量不一致。 – Trejkaz

回答

60

有代码本身:

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

public final static Color RED = red; 

上CA在JDK 1.4中引入了se信件(以符合其命名约定,指出常量必须为为大写)。

从本质上讲,没有任何区别(除了字母外壳)。


如果我想真的很勇敢,甲骨文可能会去野外和删除常量是小写,但随后会打破的书面预JDK 1.4的所有其他代码。你永远不知道,我会建议坚持大写字母的常量。它首先必须被弃用(如Andrew Thompson所提到的)。

+9

让我感到不快的是Sun花了很长时间(1.4)承认小写字母与常用的Java命名法不匹配。 –

21

确实没有区别。见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

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; 

希望这有助于!

+3

请回答新鲜问题。这个问题在2011年被问到,也得到了答案,答案被标记为接受。阅读新问题并尝试帮助这些人。干杯。 –

相关问题