GreenEyed gracias por tus explicaciones y aclaraciones. No te quiero cansar con este tema pero me quedan algunas dudas y espero si no es molestia que me la puedas aclarar.
Estuve revisando la API de java, ya que hace mucho que no agarro este tema y me di cuenta que estaba equivocado
.
Partiendo de que coincidimos que esta sentencia parece ser para acceder a un campo de una bd, entonces supongo que criteriasBusqueda es un objeto de tipo ResultSet, entonces me di cuenta de que:
La expresión, String nombre = criteriosBusqueda.get("NOMBRE");
es verdad, NO COMPILA.
Me confundí con String nombre = criteriosBusqueda.getString("Nombre");
la cual compilaría si no me equivoco y no necesitaría casteo.
La signatura de este metodo según la api sería
String getString(String columnName)
throws SQLException
Retrieves the value of the designated column in the current row of this ResultSet object as a String in the Java programming language.
Parameters:
columnName - the SQL name of the column
Returns:
the column value; if the value is SQL NULL, the value returned is null
Throws:
SQLException - if a database access error occurs
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html#getInt(java.lang.String)
lo que decia de la SQLException me confundí con esta, ya que la lanza si ocurre un error al acceder a la bd, por lo que el compilador te obliga a que esta sentencia vaya rodeada de try-catch.
Coincido con vos en que si criteriosBusqueda.get("NOMBRE") devolvería un Object y necesitaría castearse a String, pero no encontré ese método en la API, por lo que te pido me pases un link a donde figure ese método y estaré muy agradecido.
Tb. coincido sobre generics, pero otra cosa que no entendí fué esto que cito a continuación con el famoso copiar-pegar ya que no sé como citar fragmentos
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.
Me mareaste un poco ahí. Veamos si coincidimos.
Java realiza comprobaciones en tiempo de compilación, o sea, en una asignación entre punteros el compilador verifica que los tipos sean compatibles, si no lo son, no compila, como en el caso de String nombre = criteriosBusqueda.get("NOMBRE"); y realiza comprobaciones en tiempo de ejecución, como por ejemplo cuando se usa un cast para accesar un objeto como si fuese de un tipo específico, verificando que el objeto sea compatible con el cast que se le aplica, si no lo es lanza una RuntimeException, como en el caso de String nombre = (String) criteriosBusqueda.get("NOMBRE") suponiendo que el tipo de dato en esa columna no sea String.
Muchas gracias nuevamente por las aclaraciones, y si me podrías explicar un poco sobre el metodo get de criteriosBusqueda será bienvenido.
Saludos...