Разница между финальным статическим и статическим финалом

Я нашел код, в котором объявлен код вроде

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?


person MBMJ    schedule 27.06.2012    source источник
comment
Если они разные, то я полностью отказываюсь от java.   -  person Alex Lockwood    schedule 27.06.2012


Ответы (7)


Вообще никакой разницы. Согласно 8.3.1 - Классы - Модификаторы полей спецификации языка Java,

Если два или более (различных) модификатора поля появляются в объявлении поля, обычно, хотя и не требуется, они появляются в порядке, соответствующем тому, который показан выше в производстве для FieldModifier.

Для полей указанная продукция перечисляет модификаторы в следующем порядке:

@Annotation public protected private static final transient volatile

И для методов:

@Annotation public protected private abstract static final synchronized native strictfp

person Gergely Szilagyi    schedule 27.06.2012
comment
Для справки заказ по ссылке abstract static final. - person sfarbota; 24.02.2014

Они одинаковые. Порядок модификаторов не имеет значения. И обратите внимание, что то же правило применяется во всех контекстах, где модификаторы используются в Java.

Однако большинство руководств по стилю Java рекомендуют / предписывают один и тот же конкретный порядок для модификаторов. В данном случае это public static final.

person Stephen C    schedule 27.06.2012

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

даже все вышеперечисленное одинаково, позиции первых трех взаимозаменяемы.

person RTA    schedule 27.06.2012

Они такие же,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";
person jmj    schedule 27.06.2012

В чем разница между ними или они одинаковые?

Если вы говорите об изменении порядка статики и финала, то да, они такие же.

он отличается для частного или публичного?

Нет, вы можете использовать любой заказ в частном и публичном порядке. Просто разница в том, что частные переменные не будут доступны вне класса напрямую.

person Harry Joy    schedule 27.06.2012

Это просто соглашение или практика, которой люди следуют, чтобы сохранить единообразный стиль кодирования. Это улучшает читаемость. поэтому предпочтительный способ написания этого -

private static final <Type> <variable_name> = <value>;
person Vishal Akkalkote    schedule 14.05.2020

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

person pietroSV    schedule 19.04.2018