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?

MBMJ
źródło
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

Gergely Szilagyi
źródło
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.

Stephen C.
źródło
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.

RTA
źródło
8

Są takie same,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";
Jigar Joshi
źródło
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ą.

Harry Joy
źródło
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>;
Vishal Akkalkote
źródło
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

pietroSV
źródło