domingo, 21 de junio de 2009

Java: comparacion de String Class en una sentencia Case

Hace unos dias platicando con mi amigo Ernesto, le comente que trabajando con el String Class y sus comparaciones con if-then-else me estaba creando un codigo no muy estetico en cuanto a las identaciones y anidamientos que debia tener dentro de mi codigo.

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
}