Unterschied zwischen endgültiger statischer und statischer endgültiger

151

Ich habe einen Code gefunden, in dem Code wie deklariert wurde

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";

Was ist der Unterschied zwischen ihnen oder sind sie gleich? Oder unterscheidet es sich für privateoder public?

MBMJ
quelle
149
Wenn sie unterschiedlich sind, gebe ich Java komplett auf.
Alex Lockwood

Antworten:

226

Kein Unterschied. Gemäß 8.3.1 - Klassen - Feldmodifikatoren der Java-Sprachspezifikation ,

Wenn zwei oder mehr (unterschiedliche) Feldmodifikatoren in einer Felddeklaration erscheinen, ist es üblich, obwohl nicht erforderlich, dass sie in der Reihenfolge erscheinen, die mit der oben in der Produktion für FieldModifier angegebenen übereinstimmt.

Für Felder listet die Produktion die Modifikatoren in dieser Reihenfolge auf:

@Annotation public protected private static final transient volatile

Und für Methoden:

@Annotation public protected private abstract static final synchronized native strictfp

Gergely Szilagyi
quelle
9
Als Referenz ist die Reihenfolge über den Link abstract static final.
Sfarbota
42

Sie sind gleich. Die Reihenfolge der Modifikatoren ist nicht signifikant. Beachten Sie, dass dieselbe Regel in allen Kontexten gilt, in denen Modifikatoren in Java verwendet werden.

Die meisten Java-Styleguides empfehlen / schreiben jedoch dieselbe spezifische Reihenfolge für die Modifikatoren vor. In diesem Fall ist es public static final.

Stephen C.
quelle
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";

Selbst wenn alle oben genannten Punkte gleich sind, ist die Position der ersten drei austauschbar.

RTA
quelle
8

Sie sind gleich,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";
Jigar Joshi
quelle
4

Was ist der Unterschied zwischen ihnen oder sind sie gleich?

Wenn Sie über das Ändern der Reihenfolge von statisch und endgültig sprechen, dann sind sie ja gleich.

unterscheidet es sich für private oder öffentliche?

Nein, Sie können jede Bestellung privat und öffentlich verwenden. Der einzige Unterschied besteht darin, dass private Variablen außerhalb der Klasse nicht direkt zugänglich sind.

Harry Joy
quelle
1

Dies ist nur eine Konvention oder eine Praxis, die Menschen befolgen, um den Codierungsstil konsistent zu halten. Es verbessert die Lesbarkeit. so bevorzugte Schreibweise ist dies

private static final <Type> <variable_name> = <value>;
Vishal Akkalkote
quelle
0

es ist natürlich das gleiche. es hängt nur von deinen Gewohnheiten und Vorlieben ab :-). Ich verwende die öffentliche statische endgültige Reihenfolge auch für Mitglieder und Methoden

pietroSV
quelle