tenho o nome de uma classe, em uma String, e gostaria de gerar uma instancia da classe cujo nome eu tenho nessa string.
imagino q isso resolveria o problema:
Class.forName(“nome da classe”).newInstance();
certo?
mas e se a classe q eu for instanciar possuir um construtor q recebe alguns parametros, daí eu passar esses parametros ao seu construtor. como faço?
Instanciar uma classe através do seu nome
M
3 Respostas
C
mmpaulo,
Class.forName(“nome da classe”).newInstance(String, int, char);
public NomeDaClasse(String a, int b, char c) {…} // Construtor da classe
[]'s
M
assim nao funcionaria, pois o método newInstance() da classe Class nao aceita argumentos.
mas eu consegui resolver, assim:
primeiro, tenho q obter o objeto Class q representa a classe cujo nome eu tenho na String, assim:
Class classe = Class.forName(“NomeDaClasse”);
agora eu obtenho o construtor da classe, usando o método getConstructors(), q devolve um array de objetos Construtor, sendo q cada Constructor representa um construtor da classe. nao sei qual o criterio usado para ordenar os construtores dentro do vetor, mas como no meu caso a classe só tem 1 construtor, eu sei q ele tá na posição 0 do vetor:
Constructor c = classe.getConstructors()[0];
a classe constructor tem um metodo newInstance(), q cria uma nova instancia da classe que define este construtor. só q esse newInstance() recebe um vetor de Objects, que serão passados como parametros para o construtor.
ex:
public class ClasseA {
public ClasseA(String s, int i) {
System.out.println("—");
System.out.println(“Classe ClasseA sendo instanciada”);
System.out.println(“s = " + s);
System.out.println(“i = " + i);
System.out.println(”—”);
}
}
public void metodoQualquer() {
Object[] args = new Object[2];
args[0] = “Teste teste teste”;
args[1] = new Integer(12345);
ClasseA classeA = Class.forName(“ClasseA”).getConstructors()[0].newInstance(args);
}
valeu ae, cara
C
Era mais ou menos isso… :lol:
Criado 2 de outubro de 2004
Ultima resposta 2 de out. de 2004
Respostas 3
Participantes 2