SoloCodigo
Programación General => Java => Mensaje iniciado por: orlando84 en Miércoles 13 de Diciembre de 2006, 22:32
-
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
-
MEDICAMENTO medicina;
supongo q esta creando una variable medicina de tipo MEDICAMENTO pero no seria asi: MEDICAMENTO medicina =new MEDICAMENTO()
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
y esta parte que significa:
medicina = (MEDICAMENTO) iteradorListaMedicina.next();
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
-
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.
-
Hola...
MEDICAMENTO medicina;
supongo q esta creando una variable medicina de tipo MEDICAMENTO pero no seria asi: MEDICAMENTO medicina =new MEDICAMENTO()
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().
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
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