Se hizo la pregunta sobre enum, quería crear una enumeración basada en la propiedad. Renuncié a la idea, porque esta enumeración debe ser dinámica, si obtenemos un nuevo código de error, debe agregarse al archivo de propiedades. Tristemente, no veo forma de hacer eso con enum, así que elegí una ruta diferente mientras leo que todo el mundo sugiere una solución basada en mapas. En lugar de enum, creé un singleton que solo lee un archivo de propiedades y responde con las palabras clave para devolver el valor.
el archivo de propiedades:
C102 = Blablabla1
C103 = Blablabla2
C104 = Blablabla3
el código de producto único:
package mypackage;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Properties;
public class ResponseValidationTypeCodes {
private final HashMap<String, String> codes;
private static ResponseValidationTypeCodes instance;
public static ResponseValidationTypeCodes getInstance() {
if (instance == null) {
instance = new ResponseValidationTypeCodes();
}
return instance;
}
private ResponseValidationTypeCodes() {
super();
codes = new HashMap<String, String>();
initEntry();
}
private void initEntry() {
Properties prop = new Properties();
try {
prop.load(new FileInputStream(
"src/main/resources/validationcodes.properties"));
for (Entry<Object, Object> element : prop.entrySet()) {
codes.put(element.getKey().toString(), element.getValue()
.toString());
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
public String getValueByCode(String code) {
return codes.get(code);
}
}
para obtener los valores, simplemente llame:
ResponseValidationTypeCodes.getInstance()
.getValueByCode("C102");
la lectura inicial de la propiedad se ejecuta sólo una vez. Así que solo expandes la propiedad cuando aparece algún cambio y vuelves a desplegar tus cosas ese momento. Espero que ayude a alguien que esté abierto a usar alguna alternativa a enum.
Gracias, lo intentaré y me pondré en contacto contigo. – user373201
Muchas gracias, sí, lo que necesitaba – user373201
El ejemplo anterior no funcionó para mí. Tengo impreso "PROP1". 'getValue()' nunca se llama realmente. –