Różnica między ostatecznym statycznym a statycznym finałem


151

Znalazłem kod, w którym zadeklarował kod, taki jak

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

Jaka jest różnica między nimi, czy są takie same? A może różni się dla privatelub public?


149
Jeśli są różne, to całkowicie rezygnuję z javy.
Alex Lockwood

Odpowiedzi:


226

Żadnej różnicy. Zgodnie z 8.3.1 - Classes - Field Modifiers of the Java Language Specification ,

Jeśli w deklaracji pola pojawiają się dwa lub więcej (odrębnych) modyfikatorów pól, jest zwyczajowo, chociaż nie jest to wymagane, że pojawiają się one w kolejności zgodnej z kolejnością przedstawioną powyżej w produkcji dla FieldModifier.

Dla pól wspomniana produkcja wymienia modyfikatory w następującej kolejności:

@Annotation public protected private static final transient volatile

A dla metod:

@Annotation public protected private abstract static final synchronized native strictfp


9
Dla porównania, zamówienie z linku to abstract static final.
sfarbota

42

Oni są tacy sami. Kolejność modyfikatorów nie jest znacząca. Pamiętaj, że ta sama reguła ma zastosowanie we wszystkich kontekstach, w których w Javie używane są modyfikatory.

Jednak większość przewodników po stylu Java zaleca / nakazuje taką samą kolejność modyfikatorów. W tym przypadku tak jest 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";

nawet wszystkie powyższe są takie same, pozycja pierwszych trzech jest wymienna.


8

Są takie same,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

Jaka jest różnica między nimi, czy są takie same?

Jeśli mówisz o zmianie kolejności statycznej i końcowej, to tak, są takie same.

czy różni się w przypadku prywatnego czy publicznego?

Nie, możesz użyć dowolnego zamówienia prywatnego i publicznego. Różnica polega na tym, że zmienne prywatne nie będą dostępne bezpośrednio poza klasą.


1

To tylko konwencja lub praktyka, którą ludzie przestrzegają, aby zachować spójny styl kodowania. Poprawia czytelność. tak preferowany jest sposób pisania

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

0

to jest to samo, oczywiście. zależy to tylko od twoich przyzwyczajeń i preferencji :-). Używam też publicznego statycznego porządku końcowego dla członków i metod

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.