Tem como usar uma String para declarar uma classe? [ Resolvido ]

7 respostas
Pilantra

Olá pessoal,

Depois de muito trabalho consegui fazer um esquema de XML com GWT para gerar um menu dinamicamente. Só que tem um problema, os comandos desses menus, eu preciso que uma classe trate isso. Até ae tudo bem, só que o nome da classe está no XML e eu recebo esse nome como String. Tem como eu pegar essa String e fazer um cast para o tipo Class, para assim, eu poder usar como tal?

Se eu não fui muito claro, eu explico novamente :lol:

Grato.

7 Respostas

T
Class<?> klass = Class.forName ("br.com.teste.Teste");
Object obj = klass.newInstance();

Se todas as classes implementarem uma determinada interface (digamos que seja a seguinte interface:

interface Executavel {
    public void execute(); 
}

Você pode fazer algo ainda melhor:

Class<?> klass = Class.forName ("br.com.teste.Teste");
Executavel obj = (Executavel) klass.newInstance();
obj.execute();
dreamspeaker

Acho que vc quer saber sobre reflection, é isso?

Class classe = Class.forName("nomedaclasse"); Constructor construtor = classe.getConstructor(new Class[]{parametros}); (classe) construtor.newInstance(new Object[]{parametros});

Dá uma olhada na API do pacote java.lang.reflect

Pilantra

dreamspeaker, não era exatamente sobre o reflection, o que o thingol falou, era exatamente o que eu queria hehe!!

Valeu amigos!!!

T

Mas isso É reflection - e o que o DreamSpeaker mostrou é melhor porque você pode instanciar objetos que pertençam a classes que tenham construtores com parâmetros (no meu exemplo, só estou instanciando com o construtor default).

Pilantra

Humm desculpa. É que eu ainda não estudei reflection, pensei que era outra coisa hehehe. Sempre vi que o reflection é bem usado em frameworks e ides, então como eu nunca precisei fazer um framework ou uma ide, nunca corri atrás. Mas eu vou começar a estudar pra certificação então eu vou aprender esses detalhes :wink:

Valeu!

D

Queria favoritar este tópico como faço???

B

Tem um link p/ isso bem no final da página.

Criado 28 de maio de 2008
Ultima resposta 28 de mai. de 2008
Respostas 7
Participantes 5