Cita:
Iniciado por PachuG GreenEyed, me parece que esa sentencia es para acceder al campo de una base de datos, el cual dicho campo sera de tipo de dato String.
Si, eso es lo que parece.
Cita:
Iniciado por PachuG Si hay un uno en la bd no importa, no tira ningun error, ya que es un String y no un int. En caso de que el tipo de dato del campo sea distinto de String, pues con esta expresion es suficiente
String nombre = criteriosBusqueda.get("NOMBRE");
ya que al poner String nombre = ... le estas diciendo al compilador que esperas un String.
Error. Esa asignación ni siquiera compila por que criteriosBusqueda.get("NOMBRE"); devuelve un Object y el compilador quiere que tu le asegures
explicitamente que será un String. Y ese "explicitamente" es escribir un cast. Con lo que tu pones simplemente le dices que tu variable es del tipo String, nada más.
Cita:
Iniciado por PachuG Ahora no recuerdo si el chequeo lo hace en tiempo de compilacion como si fuese un objeto comun al que le aplicas el metodo get, el cual te lanzaria un error que dice algo como que se esperaba un String, o si lo hace en tiempo de ejecucion, el cual lanzaria una excepcion (de tipo SQL... creo) la cual no recuerdo
(Perdon por hacer todo a medias). Esta excepcion sera catcheada por el catch que rodea esta sentencia, ya que el compilador no te permite poner esta expresion sin rodear de try - catch. En todos los casos creo que el cast realmente no importa. Si me equivoco por favor corrigeme y sacame de dudas de lo que acabo de comentar.
Gracias...
El compilador de Java, a diferencia de otros lenguajes de tipado dinámico o tipado debil, es muy cascarrabias (Java es de tipado fuerte) y no te deja hacer eso. El chequeo del tipo de retorno solo se puede hacer en tiempo de ejecucion, ya que no puedes asegurar qué devolverá el metodo en compilacion, pero como Java es de tipado fuerte, el compilador te obliga a declarar de que tipo va a ser lo que devuelves. Podría no hacerlo y devolvería los mismos errores en ejecución, pero en Java se escogió obligar a los programadores a escribir esas cosas para obligar a los programadores a pensar, con la esperanza de hacer los programas más robustos, al igual que otros detalles del compilador. Si se consigue o no, es otro tema
.
En cuanto a la excepción, de nuevo te confundes. Un error de casting es un error no esperado y por tanto es una RuntimeException (no es "chequed") y por tanto no te obliga a hacer try/catch.
El cast "importa" en el sentido de que si no lo pones, no vas a compilar el programa. Eso ya es algo
.
S!
PD: Usando Generics te puedes evitar el cast en algunos casos, pero simplemente estás moviendo la declaración explícita desde el cast a la declaración usando Generics.... o sea que lo acabas declarando igual.