O método clássico de resolver isso envolve interfaces. É o método mais claro e mais eficiente:
interfaceNomeavel{publicStringgetNome();}...classAnimalimplementsNomeavel{}...classPessoaextendsAnimalimplementsNomeavel{// note que como Pessoa extends Animal ela já automaticamente// implements Nomeavel, mas você pode explicitar isso na declaração.}...classCarroimplementsNomeavel{}...privatevoidmostraNome(Nomeaveln){System.out.println(n.getNome());}...mostraNome(newAnimal("cao"));mostraNome(newPessoa("Mr. Dataflex"));mostraNome(newCarro("fusca"));...
T
thingol
Não use reflection como quem usa uma chave de fenda para resolver todos os problemas (inclusive o de salário baixo, ou seja, ameaçando o chefe com uma chave de fenda).
Use-a apenas quando necessário, embora ela não seja tão “prejudicial” ao desempenho do seu sistema como era antigamente (no tempo do Java 1.3 ou anterior).
MrDataFlex
thingol:
O método clássico de resolver isso envolve interfaces. É o método mais claro e mais eficiente:
interface Nomeavel {
public String getNome();
}
...
class Animal implements Nomeavel {
}
...
class Pessoa extends Animal implements Nomeavel {
// note que como Pessoa extends Animal ela já automaticamente
// implements Nomeavel, mas você pode explicitar isso na declaração.
}
...
class Carro implements Nomeavel {
}
...
private void mostraNome (Nomeavel n) {
System.out.println (n.getNome());
}
...
mostraNome (new Animal ("cao"));
mostraNome (new Pessoa ("Mr. Dataflex"));
mostraNome (new Carro ("fusca"));
...
seria otimo usar polimorfismo… porém são 132 classes… é mt melhor usar reflection