Differenza tra finale statico e finale statico


151

Ho trovato un codice in cui è stato dichiarato codice simile

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 privateo public?


149
Se sono diversi, allora mi arrendo completamente su Java.
Alex Lockwood,

Risposte:


226

Nessuna differenza. Secondo 8.3.1 - Classi - Modificatori di campo della specifica del linguaggio Java ,

Se in una dichiarazione di campo compaiono due o più modificatori di campo (distinti), è consuetudine, sebbene non richiesto, apparire nell'ordine coerente con quello mostrato sopra nella produzione per FieldModifier.

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

@Annotation public protected private static final transient volatile

E per i metodi:

@Annotation public protected private abstract static final synchronized native strictfp


9
Per riferimento, l'ordine dal link è abstract static final.
sfarbota,

42

Loro sono la stessa cosa. L'ordine dei modificatori non è significativo. E nota che la stessa regola si applica in tutti i contesti in cui i modificatori sono usati in Java.

Tuttavia, la maggior parte delle guide di stile Java consiglia / impone lo stesso ordine specifico per i modificatori. In questo caso, lo è 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";

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


8

Sono uguali

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

Qual è la differenza tra loro o sono uguali?

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

differisce per privato o pubblico?

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


1

Questa è solo una convenzione o una pratica che le persone seguono per mantenere coerente lo stile di programmazione. Migliora la leggibilità. così il modo preferito di scrivere questo è

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

0

è lo stesso, ovviamente. dipende solo dalle tue abitudini e preferenze :-). Uso l'ordine finale statico pubblico anche per membri e metodi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.