Título: Función que retorna objetos de "clases" extendidas de una abstracta Publicado por: 16BITBoy en 13 Octubre 2010, 20:10 pm Hola amigos.
He estado haciendo uno de los ejercicios que mi profesor me ha mandado y resulta que al plantearme la lógica para resolver el problema, a mi me resulta lógico (no en todos los casos, pero en este si) hacer que una función según un valor que se le pasa o que lo tiene su clase, retorne un objeto de una clase distinta según ese valor. Eso java no lo permite ( y creo que muchos otros tampoco...) No se me ocurre por ahora una manera mas intuitiva para mi(o mejor dicho, personal, a mi estilo, que eso de intuitivo es algo que depende de cada uno :D) de resolver el problema que tengo, el cual si queréis expongo, pero por ahora os pongo el código de prueba, aislado, que muestra exactamente lo que intento. A ver si se os ocurre algo en esta forma de pensar, que me ayude a solucionar el problema. Según un valor tengo que asignar en una referencia a objeto de clase abstracta un objeto de una clase extendida de esa misma abstracta, pero esta devuelta desde una función. Código
Título: Re: Función que retorna objetos de "clases" extendidas de una abstracta Publicado por: Novlucker en 13 Octubre 2010, 20:24 pm Cada vez que me paso por este foro aclaro lo mismo, no se programar en Java, así que si digo una burrada avisen :xD
Ahí estas devolviendo una instancia de clase de tipo suma, y dado que necesitas devolver una de tipo opBinaria, alcanzaría con que castees :D Saludos Título: Re: Función que retorna objetos de "clases" extendidas de una abstracta Publicado por: [D4N93R] en 13 Octubre 2010, 20:42 pm Como dice Nov, aunque no es un cast como tal, el termino correcto es Boxing, el cual consiste en "empacar" la referencia en una de sus clases bases, o simplemente en object.
Sería algo así: Código
Un saludo. Título: Re: Función que retorna objetos de "clases" extendidas de una abstracta Publicado por: 16BITBoy en 13 Octubre 2010, 20:58 pm Gracias!. Hay que ver que vengo del C y no ocurrirseme un casting, ("boxing" aquí, buen apunte :) )
Me tragué que no funcionaba también al probarlo por que ahí solo estaba evaluando una de las opciones, osea si op != 1 eso no retorna nada :D Y claro aun con el box/cast pues eclipse me dice que para mi padre si estaría bien :D Título: Re: Función que retorna objetos de "clases" extendidas de una abstracta Publicado por: [D4N93R] en 14 Octubre 2010, 01:39 am Si, y también se puede hacer lo contrario, es decir, unboxing, que lo que haría en tu caso es sacar la clase Suma de OpBinaria: return (Suma)obj; obviamente siempre tienes que validar si esa referencia contiene boxeado un objeto Suma.
Saludos! |