Programación General > Java
Codigo_java
(1/1)
orlando84:
hola a todos.
por favor podrian decirme o explicarme este codigo
MEDICAMENTO es una clase creada
List listaMedicamento = listaFarma.selectDatos();
Iterator iteradorListaMedicina = listaMedicamento.iterator();
MEDICAMENTO medicina;
while(iteradorListaMedicina.hasNext()){
medicina = (MEDICAMENTO) iteradorListaMedicina.next();
%>
<tr>
<td><%=medicina.getId_medicamento()%></td>
<td><%=medicina.getProducto()%></td>
<td><%=medicina.getCantidad()%></td>
<td><%=medicina.getPrecio()%></td>
</td>
que significa:
MEDICAMENTO medicina;
supongo q esta creando una variable medicina de tipo MEDICAMENTO pero no seria asi: MEDICAMENTO medicina =new MEDICAMENTO()
y esta parte que significa:
medicina = (MEDICAMENTO) iteradorListaMedicina.next();
no entiendo porque se coloca (MEDICAMENTO)..supuestamente hace referencia a la clase pero porque ponerlo d esa manera...no entiendo
robertogt:
--- Citar ---MEDICAMENTO medicina;
supongo q esta creando una variable medicina de tipo MEDICAMENTO pero no seria asi: MEDICAMENTO medicina =new MEDICAMENTO()
--- Fin de la cita ---
Pues no necesariamente, porque medicina puede que no vaya a utilizar ningun procedimiento o funcion de MEDICAMENTO. ahi solo esta creando una variable tipo MEDICAMENTO pero no es un objeto en sí de la clase MEDICAMENTO
--- Citar ---y esta parte que significa:
medicina = (MEDICAMENTO) iteradorListaMedicina.next();
--- Fin de la cita ---
lo que está haciendo ahi es castear la variable iteradorListaMedicina.next() porque esto contiene objetos de la clase MEDICAMENTO, hay que castear esto porque la funcion ".next()" devuelve un objeto de tipo Object, Y para convertirla a tipo MEDICAMENTO hay que castear.
Ojala te haya contestado tus preguntas. Saludos
escape:
MEDICAMENTO medicina--> crea una variable de la clase Medicamento, pero está null. No está asignada en memoria. El operarador new , reserva el espacio para la variable.
iteradorListaMedicina.next() -----> eso te entrega una variable de la clase Iterator, pero java no sabe que cosa es, sólo entrega "algo" sin sentido para él. Al hacer el cast:
(MEDICAMENTO) iteradorListaMedicina.next();--->dices que el Iterator se "convertirá" a un tipo especifico, en este caso medicina. Si te fijas en esta linea:
medicina = (MEDICAMENTO) iteradorListaMedicina.next();--->medicina recibe variables de tipo MEDICAMENTO, porque medicina es de ese tipo.
Saludos.
silverfox:
Hola...
--- Citar ---MEDICAMENTO medicina;
supongo q esta creando una variable medicina de tipo MEDICAMENTO pero no seria asi: MEDICAMENTO medicina =new MEDICAMENTO()
--- Fin de la cita ---
escape tiene razón aquí:
Lo primero crea una variable, pero sin contenido. El new reserva espacio para ese contenido y lo inicializa a ciertos valores por defecto (ejecuta tu constructor, vamos).
En este caso, no se necesita hacer un new, porque el resultado de la operación next() en tu código ya es un objeto con su memoria reservada y perfectamente creado, lo que estás haciendo sólo es 'señalarlo'. Probablemente, los new se harán dentro de la operación selectDatos().
--- Citar ---y esta parte que significa:
medicina = (MEDICAMENTO) iteradorListaMedicina.next();
no entiendo porque se coloca (MEDICAMENTO)..supuestamente hace referencia a la clase pero porque ponerlo d esa manera...no entiendo
--- Fin de la cita ---
En el API de Java, el interface Iterator, puedes ver que next() devuelve un Object.
Si quitas el (MEDICAMENTO), el compilador te dirá que no se puede convertir un Object a un MEDICAMENTO.
Si utilizases el JDK 1.5 o superior, gracias a la implementación de los Generics (como los Templates de C++), podrías ahorrarte ese cast.
Un saludo.
Silverfox
Navegación
Ir a la versión completa