2012-03-09 33 views
42

Ho una lista di stringhe costanti che ho bisogno di visualizzare in momenti diversi durante il mio programma Java.Definizione della stringa costante in Java?

In CI potrebbero definire le stringhe in questo modo nella parte superiore del mio codice

#define WELCOME_MESSAGE "Ciao, benvenuto al server"

#define WAIT_MESSAGE "Attendere 5 secondi"

#define EXIT_MESSAGE "Ciao!"

Mi chiedo quale sia il modo standard di fare questo genere di cose in Java?

+4

'stringa finale statica WELCOME_MESSAGE =" Ciao ";'? –

+5

Hai fatto qualche ricerca? – Madbreaks

+3

Sì, ma ho letto alcuni siti Web in cui dicevano che "final" non è una costante in Java, quindi non ero sicuro. – csss

risposta

94

In genere, ci si definisce questa verso la parte superiore di una classe:

public static final String WELCOME_MESSAGE = "Hello, welcome to the server"; 

Naturalmente, utilizza la visibilità membro appropriata (public/private/protected) in base a cui si utilizza questa costante.

+1

Mi sono sempre chiesto, non è necessario impostare la costante come 'statica' se si definisce la costante come 'privata'? – ChallengeAccepted

+4

No, dovrebbe essere ancora 'statico'. Rendendola privata e non statica creerebbe comunque una nuova copia della stringa ogni volta che istanziate il tipo. Vedi http://stackoverflow.com/q/1415955/247763 – derekerdmann

10

Sarebbe simile a questa:

public static final String WELCOME_MESSAGE = "Hello, welcome to the server"; 

Se le costanti sono per l'uso solo in una singola classe, che ci si vuole renderli private invece di public.

4
public static final String YOUR_STRING_CONSTANT = ""; 
3

È possibile utilizzare

public static final String HELLO = "hello"; 

se si dispone di molte costanti di stringa, è possibile utilizzare file di proprietà esterna/semplice "costante supporto" classe

1

semplicemente utilizzare

final String WELCOME_MESSAGE = "Hello, welcome to the server"; 

la parte principale di questa istruzione è la parola chiave 'finale'.

3

Oppure un altro standard tipico nel settore consiste nell'avere un file di classe Constants.java denominato contenente tutte le costanti da utilizzare in tutto il progetto.

1

Generalmente dichiariamo la costante come static. La ragione è che Java crea copie di variabili non statiche ogni volta che istanziate un oggetto della classe.

Quindi se facciamo le costanti static non lo farebbe e farebbe risparmiare memoria.

Con final possiamo rendere costante la variabile.

qui la migliore pratica definire una variabile costante è la seguente:

private static final String YOUR_CONSTANT = "Some Value"; 

Il modificatore di accesso può essere private/public seconda della logica aziendale.

+0

Hai torto. Non aiuta a risparmiare memoria a causa del pool di stringhe, usato da JVM. – Mirimas

+0

@Mirimas Nope. Ti sbagli qui amico. Statico viene inizializzato solo una volta, ma una variabile non statica viene inizializzata ogni volta che un oggetto viene inizializzato. –

+1

Qui usato il pool di stringhe, perché non si usa la "nuova" parola chiave per creare una stringa. Quindi, anche se non si utilizza statico per le stringhe, verrà utilizzato il riferimento già creato dal pool di stringhe. Ulteriori informazioni: http://stackoverflow.com/questions/3297867/difference-between-string-object-and-string-literal – Mirimas

Problemi correlati