2011-09-02 329 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年被問到,也得到了答案,答案被標記爲接受。閱讀新問題並嘗試幫助這些人。乾杯。 –

相關問題