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

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?

MBMJ
источник
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.
сфарбота
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";

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

RTA
источник
8

Они такие же,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";
Джигар Джоши
источник
4

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

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

это отличается для частного или общественного?

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

Гарри Джой
источник
1

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

private static final <Type> <variable_name> = <value>;
Вишал Аккалкоте
источник
0

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

pietroSV
источник