Tenho uma classe Cadastro_Atividades e outra Cadastro_Fornecedores, e que fazer o instanciamento dessas classes através de uma String.
Exemplo:
String classe = “Cadastro_Atividades”;
E através de classe fazer o instanciamento da Classe Cadastro_Atividades, lavando em conta que se o valor da classe fosse “Cadastro_Fornecedores” eu iria instanciar a Classe Cadastro_Fornecedores, sem precisar mudar o código, só alterando o valor da String.
Tem como fazer isso? Como posso fazer?
String classe = "Cadastro_Atividades";
Object obj = Class.forName(classe).newInstance();
E como eu faço para acessar os métodos da classe através do obj?
Aí é que tá, para ficar legal isso as classes teriam que ter uma superclasse (ou interface) em comum, assim você faria um cast direto para ela sem nem saber o que tem nesse obj…
ex.:
[code]public interface Cadastro{
public void executar();
}
public class CadastroAtividades implements Cadastro{
public void executar(){
System.out.println("Executando cadastro de atividades");
}
}
public class CadastroFornecedores implements Cadastro{
public void executar(){
System.out.println("Executando cadastro de fornecedores");
}
}
[/code]
[code]String classe = "CadastroAtividades";
Cadastro cad = (Cadastro) Class.forName(classe).newInstance();
cad.executar();[/code]
pra que você quer usar isso?
acho que o que o nosso amigo quer é isso REFLECTION
public class Coelho {
public static void main(String[] args){
try{
String nmClasse = "TesteCoelho";
String nmMetodo = "imprimeNome";
Class [] parametros = new Class[]{String.class};
Object[] vlParametros = new Object[]{"Luis Coelho"};
Object classe = Class.forName(nmClasse).newInstance();
Method met = classe.getClass().getMethod(nmMetodo,parametros);
met.invoke(classe, vlParametros);
}catch(Exception e){
e.printStackTrace();
}
}
}
class TesteCoelho{
public void imprimeNome(String nome){
System.out.println("Nome -> " + nome);
}
}
ou valeu a todos, tando como interface e reflection funcionou!Obrigadão!!!