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

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á!!!

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

Então poderia fazer assim:

[code]
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");
    }
}

}[/code]

[quote=romarcio]Vamos dizer que vc tenha a interface: MyInterface
E a classe Pessoa e a classe Endereco implementam MyInterface.

Então poderia fazer assim:

[code]
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");
    }
}

}[/code]

[/quote]

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???

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

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.

[quote=pmlm] public void decifrandoClass(InterfaceQualquer i){ System.out.println(i.getClass()); } [/quote]

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

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

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.