Saber Número de Classes Herdadas

15 respostas
thiagolopes

Amigos, mais uma vez venho pedir uma ajuda a vocês.Alguém saberia me dizer se existe algum método ou meio de saber quantas classes filhas a classe pai possui, ou seja, heranla. Abraços!

15 Respostas

rmendes08

Não há como! E se houvesse, para que serviria ?

walissongpi

Não sei te responder ao certo se existe alguma maneira mais fácil/rápida de saber esta informação. Mas seria interessante vc dar uma olhada na hierarquia de classes. :slight_smile:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html
Olhe o campo superior esquerdo.

tinorberto

Vc pretende desenvolver um programa para isso? ou so quer saber para consulta de documentação?

leorbarbosa

Creio não ser possível.

Também não consegui achar uma utilidade para isso;

tinorberto

Fiquei curioso estou tentando buscar aqui na documentação do java para ver se acho algo…

magocebolinha

Hummm até eu fiquei curioso agora… to procurando algo sobre…

thiagolopes

Seria mais a nível de programação e curiosidade,rs, o maior “problema” ou porque não dizer qualidade do programador seria a curiosidade.Também estou procurando aqui no google e achei aqui na própria comunidade uma implementação feita por um dos usuários que achei bastante interessante. Abraços amigos e mais uma vez grato pela ajuda!

rogelgarcia

Só tem jeito de saber… se voce fizer um scan das classes… e perguntar uma a uma. se essas classes herdam da classe em questao…

Andre_Brito

Ou você ter uma hierarquia consistente (sem erros), mudar o nome da superclasse e recompilar tudo. Onde estourar os erros é porque é subclasse da super. É um jeito tosco e horrendo de fezer, mas é um jeito né.

Acredito que deve ter um jeito… Não muito trivial, mas deve ter.

thiagolopes

Interessante este modo de descobrir as classes filhas, porém gostaria de saber via runtime a quantidade de classes filhas.

E

Aqui no GUJ alguém já conseguiu listar as classes de um pacote (é um processo bastante complicado).

Uma vez fazendo isso, você pode simplesmente verificar se uma classe é filha de outra classe, usando Class.isAssignableFrom.

Exemplo: sabemos que ObjectInputStream é filha de InputStream. Se você tiver um java.lang.Class referenciando cada uma das classes (que é o caso quando você quer saber tal tipo de informação; é melhor que ter o próprio objeto, já que ele pode ser difícil ou custoso de instanciar), então você pode checar isso com isAssignableFrom.
Você pode pensar em “isAssignableFrom” como sendo algo parecido com “isParentOf” (é pai de).

Class<?> c1 = InputStream.class;
Class<?> c2 = ObjectInputStream.class;
Class<?> c3 = String.class;
System.out.println (c1.isAssignableFrom (c2)); // true 
System.out.println (c2.isAssignableFrom (c1)); // false porque ObjectInputStream não é pai de InputStream.
System.out.println (c1.isAssignableFrom (c3)); // false porque String não é filha de InputStream.
System.out.println (c3.isAssignableFrom (c2)); // false porque ObjectInputStream não é filha de String.
M
Também fiquei curioso. Será que a partir desse código a gente consegue chegar à solução? Fazendo um laço e instanciando (se possível né?) cada superclasse encontrada até chegar na Object.
public class Testadora01 extends Testadora02 {

	Class c1;
	public Testadora01() {
		c1 = super.getClass();
	}
    public static void main(String[] args) {
    	Testadora01 t1 = new Testadora01();
    	System.out.println(t1.getClass().getSuperclass().getName());
    }  
}
class Testadora02 {
	public Testadora02() {
	}
}
Boa sorte!
rogelgarcia

No Next… http://www.nextframework.org tem um pacote org.nextframework.classmanager

Nesse pacote tem algumas classes que fazem isso… tem para saber as classes em modo Web e em modo Standard

Em modo standard vc usaria assim:

Class<?>[] allClassesFromPackage = ClassRegister.getClassManager().getAllClassesOfType(MyClass.class);
		for (Class<?> class1 : allClassesFromPackage) {
			System.out.println(class1);
		}

Esse class manager tem vários métodos para saber informacoes sobre as classes da sua aplicacao…

O fonte das classes estao aqui… (pra ver pelo browser)
http://code.google.com/p/nextframework/source/browse/#svn/trunk/org.nextframework/src/org/nextframework/classmanager

M

Mals! Viajei, não li direito! Você quer saber quantas classes filhas uma classe possui.
Não acho impossível saber isso, mas talvez seja bem difícil, principalmente considerando outros pacotes.
Pergunta: quantas podem ser filhas de Exception por exemplo?
Outra pergunta: quantos filhos você tem? Só Deus sabe! Mas você só pode ter um pai e uma mãe.

Boa sorte!

M

Identify subclasses at runtime
Não testei.

Boa sorte!

Criado 8 de abril de 2010
Ultima resposta 9 de abr. de 2010
Respostas 15
Participantes 10