2012-03-09 25 views
42

Tengo una lista de cadenas constantes que necesito mostrar en diferentes momentos durante mi programa Java.Definición de cadena constante en Java?

En CI podría definir las cuerdas como esta en la parte superior de mi código

#define WELCOME_MESSAGE "Hola, bienvenido al servidor"

#define WAIT_MESSAGE "Por favor, espere 5 segundos"

#define EXIT_MESSAGE "¡Adiós!"

Me pregunto ¿cuál es la forma estándar de hacer este tipo de cosas en Java?

+4

'static final Cadena WELCOME_MESSAGE =" Hola ";'? –

+5

¿Has hecho alguna investigación? – Madbreaks

+3

Sí, pero leí algunos sitios web donde decían que 'final' no es una constante en Java, así que no estaba seguro. – csss

Respuesta

94

Normalmente, se definiría este hacia la parte superior de una clase:

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

Por supuesto, utiliza la visibilidad miembro apropiado (public/private/protected) en función de donde se utiliza esta constante.

+1

Siempre me he preguntado, ¿no es innecesario establecer la constante como 'estática' si define la constante como 'privada'? – ChallengeAccepted

+4

No, todavía debería ser 'estático'. Hacerlo privado y no estático aún crearía una nueva copia de la cadena cada vez que crea una instancia del tipo. Consulte http://stackoverflow.com/q/1415955/247763 – derekerdmann

10

Se vería así:

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

Si las constantes son para uso solo en una sola clase, que te gustaría hacer que private en lugar de public.

4
public static final String YOUR_STRING_CONSTANT = ""; 
3

Puede utilizar

public static final String HELLO = "hello"; 

si tiene muchas constantes de cadena, puede utilizar archivo de propiedades externa/sencilla clase "titular constante"

1

simplemente usar

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

la parte principal de esta instrucción es la palabra clave 'final'.

3

u otro estándar típico en la industria es tener un archivo de clase denominado Constants.java que contenga todas las constantes que se utilizarán en todo el proyecto.

1

Por lo general, declaramos la constante como static. El motivo es que Java crea copias de variables no estáticas cada vez que instancia un objeto de la clase.

Así que si hacemos las constantes static no lo haría y guardaría la memoria.

Con final podemos hacer que la variable sea constante.

Por lo tanto la mejor práctica para definir una variable constante es la siguiente:

private static final String YOUR_CONSTANT = "Some Value"; 

El modificador de acceso puede ser private/public dependiendo de la lógica de negocio.

+0

Está equivocado. No ayuda a ahorrar memoria debido al grupo de cadenas, utilizado por JVM. – Mirimas

+0

@Mirimas Nope. Estás equivocado aquí amigo. Static se inicializa solo una vez, pero una variable no estática se inicializa cada vez que se inicializa un objeto de la misma. –

+1

Aquí se utilizó el grupo de cadenas, porque no se usa la palabra clave "nueva" para crear cadenas. Entonces, si ni siquiera usa static para cadenas, usará una referencia ya creada del grupo de cadenas. Ver más: http://stackoverflow.com/questions/3297867/difference-between-string-object-and-string-literal – Mirimas

Cuestiones relacionadas