2011-09-02 17 views
41

¿Cuál es la diferencia real entre las definiciones de setXxx(Color.red) y setXxx(Color.RED)?Diferencia entre Color.red y Color.RED

He encontrado la siguiente explicación en la web. ¿Se trata de nombrar convenciones?

Java originalmente definió unos pocos nombres de constante de color en minúscula, lo que violó la regla de denominación de mayúsculas para las constantes. Están disponibles en todas las versiones de Java: Color.black, Color.darkGray, Color.gray, Color.lightGray, Color.blanco, Color.magenta, Color.red, Color.pink, Color.orange, Color.yellow, Color .green, Color.cyan, Color.blue

Java 1.4 agregó los nombres correctos en mayúsculas para las constantes: Color.BLACK, Color.DARK_GRAY, Color.GRAY, Color.LIGHT_GRAY, Color.WHITE, Color.MAGENTA, Color. ROJO, Color.PINK, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE

+1

La convención de codificación para constantes es UPPER_CASE. Usar mayúsculas indica que es una constante. –

+8

'RED' es al menos tres veces más rojo que' rojo'. Y mucho más enojado. – arserbin3

+2

La convención de codificación para las constantes es UPPER_CASE, pero tenga en cuenta que RED no es en realidad una constante, porque es un Color, no una primitiva ni una enumeración. Creo que la definición de constantes que las personas usan cuando se habla de código es inconsistente con la definición de constante según JLS. – Trejkaz

Respuesta

60

No es el propio código:

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

public final static Color RED = red; 

el ca superior Se introdujeron letras en JDK 1.4 (para cumplir con su convención de nomenclatura, estableciendo que las constantes deben en mayúsculas).

Básicamente, no hay ninguna diferencia (excepto la carcasa con letras).


Si yo quiero ser muy valiente, Oracle podría ir salvaje y quitar constantes que es con carcasa inferior, pero entonces habría que romper el resto de código que está escrito antes de JDK 1.4. Nunca se sabe, sugiero que se quede con letras mayúsculas para las constantes. Sin embargo, primero tiene que estar en desuso (como lo menciona Andrew Thompson).

+9

Me irrita que el Sol tardó tanto (1.4) en admitir que los equivalentes en minúsculas no coincidían con la nomenclatura común de Java para las constantes. –

21

Realmente no hay diferencia. Consulte la clase 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 define algunos nombres de constantes de color en minúsculas, que violan la regla de denominación de la utilización de mayúsculas para constantes. Aquí está el código para el color rojo:

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

Más tarde se hizo los mismos colores, pero en mayúsculas.

public final static Color RED = red; 

Así que realmente no hay diferencia. Son todos iguales, como puedes ver por el código.

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

Hope this helps!

+3

Por favor, publique las respuestas a las preguntas nuevas. Esta pregunta se realizó en 2011 y también fue respondida y la respuesta fue marcada como aceptada.Lee nuevas preguntas y trata de ayudar a esas personas. Aclamaciones. –