2012-06-27 12 views
99

ho trovato un codice in cui ha dichiarato codice comeDifferenza tra statica finale e statica finale

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

Qual è la differenza tra loro o sono uguali? O differisce per private o public?

+112

Se sono diversi, quindi mi arrendo completamente su java. –

+13

The Holy Secret: http://static.squarespace.com/static/518f5d62e4b075248d6a3f90/t/519bef92e4b02745db13b165/1369173914913/eol.jpg?format = 750w –

risposta

156

alcuna differenza. Secondo 8.3.1 - Classes - Field Modifiers of the Java Language Specification,

Se due o più (distinti) modificatori campo appaiono in una dichiarazione di campo, è consuetudine, anche se non necessario, che appaiono nell'ordine coerente con quella mostrata sopra nella produzione di FieldModifier .

Per i campi, detta produzione elenca i modificatori in questo ordine:

@Annotationpublicprotectedprivatestaticfinaltransientvolatile

E per i metodi:

@Annotationpublicprotectedprivateabstractstaticfinalsynchronizednativestrictfp

+5

Per riferimento, l'ordine dal collegamento è 'abstract static final'. – sfarbota

8

Sono stessi,

private final static String API_RTN_ERROR = "1"; 

private static final String API_RTN_ERROR= "1"; 
28

sono la stessa cosa. L'ordine dei modificatori non è significativo. E notare che la stessa regola si applica a in tutti i contesti in cui i modificatori vengono utilizzati in Java.

Tuttavia, la maggior parte delle guide di stile Java raccomandano/richiedono lo stesso ordine specifico per i modificatori. In questo caso, è public static final.

4

Qual è la differenza tra loro o sono gli stessi?

Se stai parlando di cambiare l'ordine di statico e finale, allora sì sono gli stessi.

è diverso per privato o pubblico?

No, è possibile utilizzare qualsiasi ordine in privato e pubblico. La sola differenza è che le variabili private non saranno accessibili al di fuori della classe direttamente.

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

anche se tutti sopra sono uguali, la posizione dei primi tre è intercambiabile.

Problemi correlati