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