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


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.
сфарбота

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.