Pessoal minha duvida é a sequinte, como posso instanciar um objeto com base em um descritor(string) em tempo de execução? E como obter metadados da classe instanciada, como nome de atributos?
Abraço e t+
Como instanciar objetos usando metodos de reflexão?
P
2 Respostas
T
Este exemplo é para Java 5.0. Em Java 1.4 o exemplo é mais simples (removendo os <> e o “asSubclass”, e pondo alguns casts, deve funcionar).
Este é apenas o exemplo de instanciar uma classe pelo nome. Para obter os métodos, veja os métodos da classe java.lang.Class.
Suponha que você tenha várias classes que implementam a interface Componente:
package abc.xyz;
interface Componente {
int executa (int parametro);
}
....
package abc.xyz;
class Classe1 implements Componente {
public int executa (int parametro) {
return parametro + 1;
}
}
....
package abc.xyz;
class Classe2 implements Componente {
public int executa (int parametro) {
return parametro - 2;
}
}
e você queira instanciar a classe abc.xyz.Classe1 pelo seu nome. Você deve fazer:
package abc.xyz;
class TestComponente {
public static void main(String[] args) throws Exception {
Class<? extends Componente> cl = Class.forName ("abc.xyz.Classe1").asSubclass(Componente.class);
Componente comp = cl.newInstance();
System.out.println (comp.executa(2)); // deve imprimir 3
cl = Class.forName ("abc.xyz.Classe2").asSubclass(Componente.class);
comp = cl.newInstance();
System.out.println (comp.executa(2)); // deve imprimir 0
}
}
considero que o padrão factory seja a maneira mais indicade de se fazer isso:
http://www.guj.com.br/articles/137
Criado 23 de agosto de 2005
Ultima resposta 12 de abr. de 2013
Respostas 2
Participantes 3
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo