SoloCodigo
Programación General => Java => Mensaje iniciado por: alemag en Viernes 27 de Octubre de 2006, 05:09
-
Saludos compañeros, quiero implementar en un metodo una instrucción switch, pero me he encontrado con un problema. Se puede poner como centinela un string ?
Me parece que no, lo unico asignarle un entero, pero es que son muchas opciones, y quedaria un poco chapucero creo, y otra manera es hacerlo con secuencias if’s anidadas.
Me podria confirmar alguien lo del switch o si existe alguna instrucción semejante que pueda manejar strings ¿??
Gracias por adelantado.
-
Por lo que he leído por ahí, la variable de referencia sólo puede ser una expresión que evalúe a los tipos primitivos enteros o char.
:hola:
-
En efecto, como mi kerido compañero acaba de citar, solo puedes hacer referencia de las opciones de tu instruccion "switch" por medio de referencias de tipo entero (int) y de caracter (char)... ya que con una cadena de caracteres no podrias llevarlo a cabo, tendrias que convertir la cadena(string) a uno de estos tipos de dato... suerte amigo...!!
-
Solo se me ocurre esto:
podrias cargar todos tus Strings a un vector, y el indice del vector utilizarlos en el Switch.
Espero y te sirva.
BYTE.
-
Es cierto en java no puedes usar switch sino tan solo en tipos primitivos, en C# si puedes usar switch con string porque entre otras cosas en C# string se considera nu tipo primitivo.
Una solucion, que no se que tan factible y util sea de implementar en Java, es que crees una nueva clase que herede de String y en esa clase puedes crear una sobrecarga del operador == y del operador != ( y las demas cosas que java requiera para eso), una vez hecho eso empiezas a trabajar con tu clase nueva y ptrata de usarla en un switch como se usaria normalmente o bien solo has comparaciones con if usando == y != . :scream:
-
Es cierto en java no puedes usar switch sino tan solo en tipos primitivos, en C# si puedes usar switch con string porque entre otras cosas en C# string se considera nu tipo primitivo.
Una solucion, que no se que tan factible y util sea de implementar en Java, es que crees una nueva clase que herede de String y en esa clase puedes crear una sobrecarga del operador == y del operador != ( y las demas cosas que java requiera para eso), una vez hecho eso empiezas a trabajar con tu clase nueva y ptrata de usarla en un switch como se usaria normalmente o bien solo has comparaciones con if usando == y != . :scream:
!¿ Eso si se puede ?!
Que yo sepa, java no soporta la sobrecarga de operadores. Solucionarías muchos problemas si me explicas como hacerlo (p.e la comparación de strings)
-
Una solucionó, que no se que tan factible y util sea de implementar en Java...
...
Seria triste que no se pudiera, cuando usaba java ( 5+ años atras ) no logré ahondar en esas características pero seria el colmo que hoy en dia aun no las tenga.
-
Hola...
Por desgracia, Java no soporta (ni creo que lo haga en un futuro cercano) la sobrecarga de operadores.
Sin embargo, para comparaciones de objetos, tiene un 'truquillo' interesante, que puede ser utilizado en estos casos: El interfaz Comparable.
Este interfaz consta del método compareTo(Object) para comparar dos objetos cualesquiera (A partir de la versión 1.5.0, utiliza los templates Java para evitar comparaciones entre objetos diferentes).
De todas formas, puedes probar un truco que quizá te sirva, aunque puede que no en todos los casos de cadenas, es posible que sí te valga en el tuyo en particular.
Echa un vistazo al método int hashCode() de la clase Object (por tanto, heredado por todas sus subclases).
Un saludo.
Silverfox.