Різниця між кінцевим статичним і статичним кінцевим


151

Я знайшов код, де він оголосив подібний код

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

У чому різниця між ними чи вони однакові? Або це відрізняється для privateабо public?


149
Якщо вони різні, то я відмовляюся від Java повністю.
Алекс Локвуд

Відповіді:


226

Різниці взагалі немає. Згідно з 8.3.1 - Класи - Модифікатори поля у специфікації мови Java ,

Якщо два або більше (різних) модифікаторів поля з'являються в декларації поля, зазвичай, хоча і не потрібно, вони відображаються в порядку, що відповідає порядку, показаному вище у виробництві для FieldModifier.

Для полів згадане виробництво перераховує модифікатори в такому порядку:

@Annotation public protected private static final transient volatile

А для методів:

@Annotation public protected private abstract static final synchronized native strictfp


9
Для довідки, замовлення за посиланням є abstract static final.
sfarbota

42

Вони однакові. Порядок модифікаторів не суттєвий. І зауважте, що те саме правило діє у всіх контекстах, де модифікатори використовуються на Java.

Однак більшість посібників зі стилю Java рекомендують / доручать однаковий конкретний порядок для модифікаторів. У цьому випадку це так 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";

навіть все вище є однаковим, положення перших трьох є незмінним.



4

У чому різниця між ними чи вони однакові?

Якщо ви говорите про зміну порядку статичного і остаточного, то так, вони однакові.

чи відрізняється це для приватного чи державного?

Ні, ви можете використовувати будь-яке замовлення в приватному та державному. Різниця лише в тому, що приватні змінні не будуть доступні безпосередньо поза класом.


1

Це просто умова або практика, яку дотримуються люди, щоб дотримуватися стилю кодування послідовно. Це покращує читабельність. настільки бажаний спосіб написання цього

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

0

це ж, звичайно. це залежить лише від ваших звичок та уподобань :-). Я також використовую публічне статичне остаточне замовлення для членів і методів

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.