Classe que retorna instancia de outro objeto

DAe galera!!! Eu tava querendo fazer algo assim!!
Vamos supor que eu tenha 5 classes e outra classe que vai fazer o tratamento que eu quero!! Essa outra classe teria um método que recebe o nome da classe, instancia o objeto e me retorna a instancia de uma dessas 5 classes!!
Como eu posso fazer isso? Eu li alguma coisa sobre Reflection!! Alguém teria algum exemplo?
Valeu e fiquem com Deus!!!

Ola,
seria +/- assim:

import java.lang.reflection.*;
...
public Object retornaInstancia(String className){
  try{
    //o className deve ser o package.NomeDaClasse
    Class classe = Class.forName(className);
    // se der chabu nesta linha é pq não achou a classe
    Constructor constructor = classe.getConstructor(new Class[0]);
    //na linha de cima se pega o construtor default, se der erro é pq não existe... se for pra pegar outro constrtor só passar os tipos do parametro no array de Class.
    return constructor.newInstance();
    //instanceia e devolve uma nova instancia
  }catch(Exception e){
    e.printStackTrace();
  }
}

E ai Jhonatas tranquilo? É com Reflection sim. O que tu podes fazer é usar a classe “Class”. Com ela tu podes criar uma nova instância pelo nome da classe. Um exemplo em que muita gente usa reflection e não se dá conta é com o JDBC quando se invoca a classe do driver:

//...
Class driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
OracleDriver driver = (OracleDriver) driverClass.newInstance();
//...

Se estiver usando a versão 5 do Java…

@SuppressWarnings("unchecked")
private void reflect() {
    Class<OracleDriver> driverClass = (Class<OracleDriver>) Class.forName("oracle.jdbc.driver.OracleDriver");        
    OracleDriver driver = driverClass.newInstance();
}

Agora com a instância “na mão” podes invocar o que estiver definido nela. Usando o objeto da classe Class consegues obter nomes de metodos, atributos, super classes…

E o que anda aprontado aí na halt? T+

Valeu galera!!! E quem é tu iktuz?
Tenho minhas suspeitas!!
Huahuhaua

José Renato :wink: