...
/**
* The color white. In the default sRGB space.
*/
public final static Color white = new Color(255, 255, 255);
/**
* The color white. In the default sRGB space.
* @since 1.4
*/
public final static Color WHITE = white; // My comment: THE SAME!!??
...
从上面的摘录中可以看出,Color
white
已分配给两个变量,即Color#WHITE
和Color#white
这也是同样的情况:
- black (and BLACK)
- blue (and BLUE)
- cyan (and CYAN)
- darkGray (and DARK_GRAY)
- gray (and GRAY)
- green (and GREEN)
- lightGray (and LIGHT_GRAY)
- magenta (and MAGENTA)
- orange (and ORANGE)
- pink (and PINK)
- red (and RED)
->white (and WHITE)<-discussed
- yellow (and YELLOW)
最初,我曾经认为每种颜色都有两个名称是有原因的。但当我检查source code时,我发现它们都具有相同的值!
我想知道为什么每种颜色都有两个变量?
此类使用是否有任何具体原因(无论是历史性的,实用的等)?
最后,在我们的应用程序中使用哪两个?:
// THIS?:
Color newC = Color.white;
// OR THIS?:
Color newC = Color.WHITE;
答案 0 :(得分:5)
变量根据Java约定进行了更改,其中常量仅为大写。小写字母仍然存在兼容性并具有相同的值。
要遵循Java约定,您应始终使用大写常量,如:
Color.RED
答案 1 :(得分:3)
因为他们想要遵循约定(因为 JDK 1.4 ),其中常量应该仅以大写形式使用。所以你应该更喜欢使用:
Color.RED
答案 2 :(得分:3)
如果你看到Color.java的源代码,你会发现两者都是相同的。
public final static Color white = new Color(255, 255, 255);
和1.4以来
public final static Color WHITE = white;
仅仅因为Java规范说常量(最终静态)应该是大写的,所以引入了WHITE
常量。
<强>更新强>
按照惯例,常量值的名称拼写为大写 字母。如果名称由多个单词组成,则单词为 用下划线(_)分隔。