181 votes

Différence entre final static et static final

J'ai trouvé un code où il déclarait un 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 private ou public ?

165 votes

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

259voto

Gergely Szilagyi Points 1369

Pas de différence du tout. 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 d'usage, mais non obligatoire, qu'ils apparaissent dans un ordre conforme à celui indiqué ci-dessus dans la production pour FieldModifier.

Pour les champs, ladite production énumère 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

12 votes

Pour référence, l'ordre du lien est le suivant abstract static final .

51voto

Stephen C Points 255558

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

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

20voto

RTA Points 862
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 si tous les éléments ci-dessus sont identiques, la position des trois premiers est interchangeable.

1 votes

Ils sont en effet tous interchangeables, mais ils mettront les autres lecteurs de code en colère. Mieux vaut s'en tenir à une seule commande

9voto

Jigar Joshi Points 116533

Ils sont identiques,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4voto

Harry Joy Points 27760

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

Si vous parlez de changer l'ordre de la statique et de la finale, alors oui, ils sont identiques.

est-il différent pour le privé ou le 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X