É possível descobrir que class está implementando a tal interface?

7 respostas
A

Bem veio em mente agora…

Minha pergunta no caso se seria possível descobrir qual class está implementando tal interface como base num código abaixo:

public interface InterfaceQualquer {

public void seusMetodosQualquer();

}
public class ClassQualquer implements InterfaceQualquer {
//  Aqui é implementado os métodos da interface e
// outras coisas se quiserem....

}
public class OutraClass {
 public void decifrandoClass(InterfaceQualquer i){
// Aqui existe uma possibilidade de se descobrir que class que está vindo
// como parametros que implementa InterfaceQualquer????
}

}

Deu pra entender a pergunta???

Obrigado desde já!!!

7 Respostas

R

Vamos dizer que vc tenha a interface: MyInterface
E a classe Pessoa e a classe Endereco implementam MyInterface.

Então poderia fazer assim:
public class Teste {
    public static void main(String[] args) {
        new Teste().decifrandoClass(new Pessoa());

        new Teste().decifrandoClass(new Endereco());

    }

    private void decifrandoClass(MyInterface myInterface) {
        if (myInterface instanceof Pessoa) {
            System.out.println("Classe Pessoa");
        } else if (myInterface instanceof Endereco) {
            System.out.println("Classe Endereco");
        }
    }

}
A
romarcio:
Vamos dizer que vc tenha a interface: MyInterface E a classe Pessoa e a classe Endereco implementam MyInterface. Então poderia fazer assim:
public class Teste {
    public static void main(String[] args) {
        new Teste().decifrandoClass(new Pessoa());

        new Teste().decifrandoClass(new Endereco());

    }

    private void decifrandoClass(MyInterface myInterface) {
        if (myInterface instanceof Pessoa) {
            System.out.println("Classe Pessoa");
        } else if (myInterface instanceof Endereco) {
            System.out.println("Classe Endereco");
        }
    }

}

Só que aqui no caso usando instanceof vc tem que saber todas as class que implementa... e todas que eu criar uma class nova que implementasse a tal interface teria que está colocando no método que faz o instanceof..... =/

Não existe alguma maneira com reflection???.... eu não conseguir achar nada até agora..... mas mesmo assim muito obrigado romarcio..... alguém tem alguma idéia ae???

P
public void decifrandoClass(InterfaceQualquer i){  
    System.out.println(i.getClass());
}
V

Não tem nada assim no Java.
Já ouvi falar de um pacote que faz isso no Jakarta, mas não saberia dizer se realmente existe.

A

pmlm:
public void decifrandoClass(InterfaceQualquer i){ System.out.println(i.getClass()); }

Putz… resolveu tudo… bem que a coisa é mais simples do que eu pensava… nem passou pela cabeça isso… obrigado!

R

Particularmente, não vejo utilidade nisso. Mas fico curioso sempre que essa questão aparece no fórum …

F

Se estiver no eclipse clica no botão direito na interface e depois em “Open Type Hierarchy”. Vai mostrar todas as classes que implementam aquela interface.

Criado 12 de junho de 2011
Ultima resposta 13 de jun. de 2011
Respostas 7
Participantes 6