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

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

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?

Ответ 1

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

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

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

@Annotation public protected private static final transient volatile

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

@Annotation public protected private abstract static final synchronized native strictfp

Ответ 2

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

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

Ответ 3

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

Они одинаковы,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

Ответ 5

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

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

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

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