Reflection e Herança [RESOLVIDO]

5 respostas
71C4700

Pessoal estava estudando sobre Reflection e surgiu uma duvida, ou melhor estou necessitando de capturar os metodos da Super classe.

public class Pessoa{
       private String nome;
       private int idade;
// Getters and Setteres
}

public Aluno extends Pessoa{

private String matricula;
}

Agora queria capturar os metodos

setNome(String nome); setIdade(int idade);

Utilizando reflection com uma instancia de aluno.

Tem como ???

5 Respostas

V

Tem sim…

Method[] methods = myClass.getClass().getDeclaredMethods();
            Method[] methodsSuper = myClass.getClass().getSuperclass().getDeclaredMethods();
71C4700

E caso se tivesse uma classe que estende outra e outra.
Três niveis

Animal -> Felino -> Gato
Animal -> Felino -> Tigre

71C4700

Teria com tambem identificar em aluno se ele possui o extends, para poder pegar os metodos da super(Pessoa) ?

Desculpe o up!

pintofree

Tem como fazer tudo com refletion, ai metodos privados vc acessa e instancia.
So precisa estudar amigo.

71C4700

pintofree:
Tem como fazer tudo com refletion, ai metodos privados vc acessa e instancia.
So precisa estudar amigo.

Concordo plenamente com vc. Mas eu estava com uma duvida, por isso postei, mas tambem estava estudando.

Consegui fazer assim, não se é a melhor solução mais foi.

public class Principal {

    public static void main(String[] kkk) {
        Animal animal = new Gato();
        Class classe = animal.getClass();
        Class aux = classe;
        
        // Enquanto a super classe não for a Object 
        while(Object.class != aux){
            imprime(aux);
            aux=aux.getSuperclass();
        }

    }

    private static void imprime(Class classe) {
        Method[] metodos = classe.getDeclaredMethods();
        for (int i = 0; i < metodos.length; i++) {
            Method metodo = metodos[i];
            metodo.setAccessible(true);
            System.out.println(metodo.getName());
        }
    }
}

Ai ele caminha enquanto tiver superclasse.

Criado 28 de novembro de 2008
Ultima resposta 28 de nov. de 2008
Respostas 5
Participantes 3