Unterschied zwischen Endstatik und Statikfinale

Lesezeit: 3 Minuten

Benutzer-Avatar
MBMJ

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 private oder public?

  • Wenn sie unterschiedlich sind, dann gebe ich Java komplett auf.

    – Alex Lockwood

    27. Juni 2012 um 4:48 Uhr

Benutzer-Avatar
Gergely Szilagyi

Überhaupt kein Unterschied. Entsprechend
8.3.1 – Klassen – Feldmodifikatoren der Java-Sprachspezifikation,

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

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

@Annotation public protected private static final transient volatile

Und zu den Methoden:

@Annotation public protected private abstract static final synchronized native strictfp

  • Als Referenz dient die Bestellung aus dem Link abstract static final.

    – Farbbote

    24. Februar 2014 um 2:08 Uhr

Sie sind gleich. Die Reihenfolge der Modifikatoren ist nicht signifikant. Und beachten Sie, dass die gleiche Regel in gilt alle Kontexte, 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.

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

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

  • Es sind zwar alle austauschbar, aber andere Code-Leser werden sich echt ärgern. Bleib lieber bei einer Bestellung

    – runzhi xiao

    27. Dezember 2021 um 9:10 Uhr

Sie sind gleich,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

Kein logischer Unterschied und keine technischen Auswirkungen.

Das einzige Problem ist, dass sonarqube Code Smell meldet, wenn Sie es in dieser Reihenfolge verwenden

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

Daher ist die Empfehlung zu verwenden:

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

Die Java Language Specification empfiehlt, Modifikatoren in der folgenden Reihenfolge aufzulisten:

  1. Anmerkungen
  2. Öffentlichkeit
  3. geschützt
  4. Privatgelände
  5. abstrakt
  6. statisch
  7. Finale
  8. vorübergehend
  9. flüchtig
  10. synchronisiert
  11. einheimisch
  12. strengfp

Beachten Sie, dass das Befolgen dieser Konvention keine technischen Auswirkungen hat, aber die Lesbarkeit des Codes verringert, da die meisten Entwickler an die Standardreihenfolge gewöhnt sind.

Benutzer-Avatar
Harry Freude

Was ist der Unterschied zwischen ihnen oder sind sie gleich?

Wenn Sie über die Änderung der Reihenfolge von Static und Final sprechen, dann ja, sie sind gleich.

Unterscheidet es sich für privat oder öffentlich?

Nein, Sie können jede Bestellung privat und öffentlich verwenden. Der einzige Unterschied besteht darin, dass auf private Variablen außerhalb der Klasse nicht direkt zugegriffen werden kann.

Benutzer-Avatar
Vishal Akkalkote

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

1350510cookie-checkUnterschied zwischen Endstatik und Statikfinale

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy