2012-11-07 7 views
3

Les deux ordres de syntaxe suivants sont valides dans Java. Pourquoi les deux sont autorisés et y a-t-il un ordre de syntaxe préféré?Ordre de syntaxe en Java

private final static String consultantType = "consultantType"; 
    private static final String consultantId = "consultantId"; 

Répondre

4

Toute commande est autorisé parce qu'il n'y a pas de valeur en restreignant l'ordre, alors pourquoi prendre la peine d'imposer la charge de se rappeler un ordre fallacieux sur le programmeur?

Cela ne fait absolument aucune différence quelle commande vous utilisez. Choisissez celui que vous préférez, utilisez-le régulièrement et passez à un problème plus intéressant.

Pour ce que ça vaut, je pense que "private static final" est probablement plus commun.

+0

C'est un bon point, merci pour la réponse de l'accepteront comme valable après 10 min. exigence. P.S il y a une différence entre une question et un problème! ce n'était pas un problème plutôt une question à préparer pour la question d'entrevue quand ça arrive :) - Duncan –

8

Les Java Language Specification section 8.3.1 états:

Si deux ou plusieurs (distincts) modificateurs de champ apparaissent dans une déclaration sur le terrain, il est d'usage, mais pas nécessaire, qu'ils apparaissent dans l'ordre conforme à celle ci-dessus la production pour FieldModifier.

La production FieldModifier est:

 
FieldModifier: one of 
    Annotation public protected private 
    static final transient volatile 

Donc, dans votre cas, il est de coutume d'utiliser private static final, bien que toute commande est valide.

0

Pour Java ne change pas l'ordre dans lequel vous avez placé les modificateurs. Par conséquent, "public static" et "static public" fonctionnent et sémantiquement signifie la même chose.

0

Toute commande est valide. Par conséquent, Checkstyle étiqueté avec un avertissement lorsqu'il rencontre un modificateur en dehors de l'ordre suivant. Voir le contrôle ModifierOrder.

  1. public
  2. protected
  3. private
  4. abstract
  5. static
  6. final
  7. transient
  8. volatile
  9. synchronized
  10. native
  11. strictfp