forName e OOP

2 respostas
A

Ola,

Estou tomando a maior surra do pedaço, gostaria de fazer uma rotina da seguinte forma existiria uma classe tipo cliente e uma outra tipo usuario, as duas teriam um metodo chamado “listar()” q so exibiria todos os registros de um banco, mas a chamada seria algo global, exisitiria um form generico para isso, descobri que com o forName eu consigo chamar a classe mas nao to conseguindo acessar os metodos q estao dentro.

Obrigado

2 Respostas

C

Sugiro que dê uma boa olhada na documentação do pacote java.lang.reflect, pois classes deste pacote vão lhe ajudar a fazer o que vc quer. Um exemplo :

try{
         Object obj = Class.forName("nome.da.classe").newInstance();

         Method metodo = obj.getClass().getMethod("listar", null );

         metodo.invoke( obj , null ); 
     }catch( bla bla ){}
Neste exemplo instanciamos um objeto do tipo "nome.da.classe" e invocamos seu metodo "listar" que recebe 0 (zero) parametros.
   Para instanciar um objeto atravéz de newInstance() a classe deve ter um constructor padrão ( publico e sem argumentos).
   Estude a documentação para maiores informações.[/code]
A

Claudio, funcionou perfeitamente, era exatamente isso que precisama, mas me surgiu agora outra colocação, seria essa uma saida elegante ou seria criar uma interface e na hora da criação do objeto ja criaria ele do tipo da interface que ai os metodos publicos ja viriam todos (ou tudo isso é um devanio da minha cabeca q ainda esta aprendendo OOP)

Grato

Criado 11 de novembro de 2003
Ultima resposta 12 de nov. de 2003
Respostas 2
Participantes 2