Différence entre final statique et statique final


151

J'ai trouvé un code où il déclarait du code comme

private final static String API_RTN_SUCCESS = "0";
private final static String API_RTN_ERROR = "1";

public static final String SHARED_PREFERENCE_CONFIG = "shared_preference_config";
public static final String STARTUP_SETTING_KEY = "startup_setting";

Quelle est la différence entre eux ou sont-ils identiques? Ou est-ce différent pour privateou public?


149
S'ils sont différents, alors j'abandonne complètement java.
Alex Lockwood

Réponses:


226

Aucune différence. Selon 8.3.1 - Classes - Modificateurs de champ de la spécification du langage Java ,

Si deux ou plusieurs modificateurs de champ (distincts) apparaissent dans une déclaration de champ, il est habituel, bien que non obligatoire, qu'ils apparaissent dans l'ordre correspondant à celui indiqué ci-dessus dans la production de FieldModifier.

Pour les champs, ladite production répertorie les modificateurs dans cet ordre:

@Annotation public protected private static final transient volatile

Et pour les méthodes:

@Annotation public protected private abstract static final synchronized native strictfp


9
Pour référence, la commande à partir du lien est abstract static final.
sfarbota

42

Ce sont les mêmes. L'ordre des modificateurs n'est pas significatif. Et notez que la même règle s'applique dans tous les contextes où des modificateurs sont utilisés en Java.

Cependant, la plupart des guides de style Java recommandent / imposent le même ordre spécifique pour les modificateurs. Dans ce cas, c'est le cas public static final.


19
private static final String API_RTN_ERROR= "1";
private final static String API_RTN_ERROR= "1";
static private final String API_RTN_ERROR= "1";
static final private String API_RTN_ERROR= "1";
final static private String API_RTN_ERROR= "1";
final private static String API_RTN_ERROR= "1";

même tous les éléments ci-dessus sont identiques, la position des trois premiers est interchangeable.


8

Ils sont pareils,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

Quelle est la différence entre eux ou sont-ils identiques?

Si vous parlez de changer l'ordre statique et définitif, alors oui, ils sont identiques.

est-ce différent pour privé ou public?

Non, vous pouvez utiliser n'importe quel ordre en privé et en public. La seule différence est que les variables privées ne seront pas accessibles directement en dehors de la classe.


1

Ceci est juste une convention ou une pratique que les gens suivent pour garder le style de codage cohérent. Cela améliore la lisibilité. la manière préférée d'écrire ceci est

private static final <Type> <variable_name> = <value>;

0

c'est la même chose, bien sûr. cela ne dépend que de vos habitudes et de vos préférences :-). J'utilise également l'ordre final statique public pour les membres et les méthodes

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.