Foros del Web » Programación para mayores de 30 ;) » Java »

Conocer todos las clases hijas de una clase

Estas en el tema de Conocer todos las clases hijas de una clase en el foro de Java en Foros del Web. ¡Hola!. Vereis, estoy trasteando con el API Reflection, y me ha surgido una duda... ¿Es posible recuperar todas las clases que son hijas de una ...
  #1 (permalink)  
Antiguo 27/01/2010, 06:41
 
Fecha de Ingreso: marzo-2006
Mensajes: 106
Antigüedad: 18 años, 9 meses
Puntos: 0
Conocer todos las clases hijas de una clase

¡Hola!.

Vereis, estoy trasteando con el API Reflection, y me ha surgido una duda... ¿Es posible recuperar todas las clases que son hijas de una clase concreta?.

Se que se puede hacer lo contrario, conocer el padre de una clase... ¿Con reflection se puede hacer el caso inverso?.

Y de no ser así, ¿Es posible conocer cuantas clases implementan una interfaz?.

Un saludo.
__________________
"El río más profundo siempre es el más silencioso"
  #2 (permalink)  
Antiguo 27/01/2010, 09:35
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Conocer todos las clases hijas de una clase

¿refieres en la primera pregunta a esto?

http://www.google.es/search?hl=es&q=...subclassof+jav

(abre los 4 primeros enlaces y coteja si esas API te sirven)

Te dejo las otras preguntas a ti
  #3 (permalink)  
Antiguo 28/01/2010, 03:00
 
Fecha de Ingreso: marzo-2006
Mensajes: 106
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Conocer todos las clases hijas de una clase

Más bien era si podía conocer todos los hijos de una clase en tiempo de ejecución, a partir de la clase padre, más en plan:

Class clases [] = ClasePadre.getChildren();

Pero creo que ya Java no es capaz de procesar eso.

Aún así, gracias por el aporte.

Un saludo.
__________________
"El río más profundo siempre es el más silencioso"
  #4 (permalink)  
Antiguo 28/01/2010, 04:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Conocer todos las clases hijas de una clase

La clase padre se sabe en tiempo de compilación, por lo que es fácil de averiguar en ejecución ya que la información ya está calculada.

Las clases hijas hay que buscarlas por todo el classpath en tiempo de ejecución, lo cual es mucho más complicado y directamente el API reflection no lo prorporciona. He visto alguna librería que lo hace, pero son bastante complejas.

¿Las clases hijas las vas a añadir tu? Por que para poder "registrar" clases hijas dinamicamente si que existe una forma en Java.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 29/01/2010, 04:56
 
Fecha de Ingreso: marzo-2006
Mensajes: 106
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Conocer todos las clases hijas de una clase

Si, las clases hijas las voy a implementar yo.

He encontrado una solución parcial... Y es recorrer todas las clases contenidas en un paquete, y comprobar que tengan ese padre determinado. La única limitación es que las clases hijas deben estar en un paquete determinado, pero no es una limitación muy importante.

Un saludo.
__________________
"El río más profundo siempre es el más silencioso"
  #6 (permalink)  
Antiguo 29/01/2010, 06:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Conocer todos las clases hijas de una clase

Una opción más "elegante" es, si puedes usar Java 6, utilizar java.util.ServiceLoader. En este caso declaras las clases que implementan una interfaz en el META-INF de una forma especial y es capaz de recuperarlas sin tener que recorrer todo el paquete.

Por si te sirve.
S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: clase, clases, conocer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:15.