2012-06-27 28 views
99

me encontré con un código donde se declara un código comoDiferencia entre static final y static final

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 es diferente para private o public?

+112

Si son diferentes, entonces renuncio completamente a Java. –

+13

El secreto sagrado: http://static.squarespace.com/static/518f5d62e4b075248d6a3f90/t/519bef92e4b02745db13b165/1369173914913/eol.jpg?format = 750w –

Respuesta

156

ninguna diferencia en absoluto. Según 8.3.1 - Classes - Field Modifiers of the Java Language Specification,

Si dos o más (distintos) modificadores del campo aparecen en una declaración de campo, es habitual, aunque no se requiere, que aparecen en el orden consistente con el mostrado anteriormente en la producción para FieldModifier .

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

@Annotationpublicprotectedprivatestaticfinaltransientvolatile

Y para métodos:

@Annotationpublicprotectedprivateabstractstaticfinalsynchronizednativestrictfp

+5

Como referencia, el orden del enlace es 'abstract static final'. – sfarbota

8

Son misma,

private final static String API_RTN_ERROR = "1"; 

private static final String API_RTN_ERROR= "1"; 
28

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

Sin embargo, la mayoría de las guías de estilo Java recomiendan/ordenan el mismo orden específico para los modificadores. En este caso, es public static final.

4

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

Si hablamos de cambiar el orden de estática y final, entonces sí son iguales.

¿Es diferente para público o privado?

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

16
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 intercable.

Cuestiones relacionadas