Buscando soluciones esteticas y sobre todo eficientes, Ernesto me comento que habia la posibilidad de resolver este problema con una tabla hash, asi que me di a la tarea de ver las APIs de las clases que me podrian servir. La implementacion es como sigue:
//Instancia del hashtable, se agregan los valores que esperamos recibir
Hashtable action = new Hashtable();
//Se registran las cadenas y los valores que van a tener en hashtable
action.put("list", new Integer(1));
action.put("new", new Integer(2));
action.put("edit", new Integer(3));
action.put("rm", new Integer(4));
//Se intenta capturar la excepcion en el caso de que llegue
//otro valor distinto a los esperados en hashtable
try{
switch( (Integer) action.get( myString ) ){
case 1:
//codigo para cuando llega una cadena "list"
case 2:
//codigo para cuando llega una cadena "new"
case 3:
//codigo para cuando llega una cadena "edit"
case 4:
//codigo para cuando llega una cadena "rm"
}
}
//En caso de llegar cadena no registrada se captura la excepcion
catch(NullPointerException e){
//codigo de exepcion, algo asi como un "default" dentro del case
}
1 comentario:
Hola Martín. Yo en lo personal prefiero utilizar constantes como en C :). Hay veces que creo las constantes en la misma clase, pero en el caso que sean constantes más generales, prefiero crear una clase final para colocar esas constantes. Por ejemplo:
public static final int NUEVO = 0;
Para el caso que se trate de valores obtenidos desde alguna tabla de la base de datos, normalmente con valores de configuración fijos, el valor del entero puede ser el id del registro. Se me hace más fácil manejarlo así q con HashTable. Dependiendo de la técnica, te puedes ahorrar la comparación entre cadenas.
Saludos.
Publicar un comentario