Différence entre Color.red et Color.RED

Quelle est la différence réelle entre les définitions de setXxx(Color.red) et de setXxx(Color.RED) ?

J’ai trouvé l’explication suivante sur le web. Est-ce tout au sujet des conventions de nommage?

À l’origine, Java définissait quelques noms de constante de couleur en minuscule, ce qui violait la règle de dénomination consistant à utiliser des majuscules pour les constantes. Ils sont disponibles dans toutes les versions de 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 a ajouté les noms de majuscules appropriés aux constantes: 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

Il y a le code lui-même:

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

Les lettres majuscules ont été introduites dans JDK 1.4 (pour se conformer à sa convention de dénomination, indiquant que les constantes doivent être en majuscule).

Essentiellement, il n’y a pas de différence du tout (à l’exception des casiers à lettres).


Si je veux vraiment être courageux, Oracle risque de se déchaîner et de supprimer les constantes minuscules, mais cela briserait tout le code écrit avant JDK 1.4. Vous ne savez jamais, je suggère de coller aux lettres majuscules pour les constantes. Il faut d’abord déconseiller (comme mentionné par Andrew Thompson).

Il n’y a vraiment aucune différence. Voir la classe de 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; 

Java a défini des noms de constante de couleur en minuscule, ce qui est contraire à la règle de dénomination consistant à utiliser des majuscules pour les constantes. Voici le code pour la couleur rouge:

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

Plus tard, ils ont fait les mêmes couleurs mais en majuscules.

 public final static Color RED = red; 

Donc, il n’y a vraiment pas de différence. Ils sont tous identiques, comme vous pouvez le constater par le code.

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

J’espère que cela t’aides!