Diferencia entre estática final y estática final


151

Encontré un código donde declaraba código como

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

¿Cuál es la diferencia entre ellos o son iguales? ¿O difiere para privateo public?


149
Si son diferentes, entonces renuncio a Java por completo.
Alex Lockwood

Respuestas:


226

No hay diferencia en absoluto. De acuerdo con 8.3.1 - Clases - Modificadores de campo de la especificación del lenguaje Java ,

Si aparecen dos o más modificadores de campo (distintos) en una declaración de campo, es habitual, aunque no obligatorio, que aparezcan en el orden coherente con el que se muestra arriba en la producción de FieldModifier.

Para los campos, dicha producción enumera los modificadores en este orden:

@Annotation public protected private static final transient volatile

Y por métodos:

@Annotation public protected private abstract static final synchronized native strictfp


9
Como referencia, el orden desde el enlace es abstract static final.
sfarbota

42

Ellos son iguales. El orden de los modificadores no es significativo. Y tenga en cuenta que la misma regla se aplica en todos los contextos donde se utilizan modificadores en Java.

Sin embargo, la mayoría de las guías de estilo Java recomiendan / exigen el mismo orden específico para los modificadores. En este caso, lo es 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";

incluso todos los anteriores son iguales, la posición de los tres primeros es intercambiable.


8

Son lo mismo,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

¿Cuál es la diferencia entre ellos o son iguales?

Si está hablando de cambiar el orden de static y final, entonces sí, son lo mismo.

¿Difiere para privado o público?

No, puede usar cualquier orden en privado y público. La única diferencia es que las variables privadas no serán accesibles fuera de la clase directamente.


1

Esto es solo una convención o una práctica que la gente sigue para mantener el estilo de codificación consistente. Mejora la legibilidad. forma tan preferida de escribir esto es

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

0

Es lo mismo, por supuesto. solo depende de tus hábitos y preferencias :-). También uso el orden público estático final para miembros y métodos

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.