• Jueves 28 de Marzo de 2024, 19:59

Autor Tema:  Codigo_java  (Leído 1359 veces)

orlando84

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Codigo_java
« en: Miércoles 13 de Diciembre de 2006, 22:32 »
0
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

  • Miembro activo
  • **
  • Mensajes: 97
  • Nacionalidad: gt
    • Ver Perfil
    • http://robertux.wordpress.com
Re: Codigo_java
« Respuesta #1 en: Miércoles 13 de Diciembre de 2006, 22:46 »
0
Citar
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

Citar
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
Un dia sin sol es como, ya sabes, ... noche

escape

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Codigo_java
« Respuesta #2 en: Jueves 14 de Diciembre de 2006, 06:57 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Codigo_java
« Respuesta #3 en: Jueves 14 de Diciembre de 2006, 15:51 »
0
Hola...

Citar
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().

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

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