Como instânciar uma classe recebida por parâmetro?

 Olá amigos, tudo bem?  :D 

 Estou construindo uma classe Builder ([i]Fluent Interface[/i]) para gerar gráficos. As classes que serão utilizadas por este [i]Builder[/i] extendem a classe [b]GeraGrafico[/b]. Utilizo este processo para permitir baixo acoplamento ao tipo de gráfico que este quer gerar, sendo que cada implementação de GeraGrafico decide qual tipo de gráfico será construido.

[code]public Object tipoDeGrafico(Class classeGeraGrafico) throws InstantiationException, IllegalAccessException {

            tipoDeGrafico = classeGeraGrafico.newInstance();
	return this;

}
[/code]

Este código acima retornará uma InstantiationException, pois a classe passada como parâmetro possui apenas um Construtor com parâmetros.

Exemplo de chamada do método:

GeradorDeGrafico.tipoDeGrafico(GeraGraficoCandleStick.class);

:!: Problema:

A classe abstrata GeraGrafico possui um construtor com parâmetros e suas classes filhas apenas o sobrescrevem. Preciso saber uma maneira de passar os parâmetros para o construtor.

Alguem tem noção de como posso resolver isto :?:

Olá,

Você precisa recuperar os construtores ou construtor e então chamar o newInstance passando o parametro, segue:

    
      classeGeraGrafico.getConstructor(TipoDoAtributoQueOConstrutorRecebe.class).newInstance(parametroDoConstrutor);

abraço!

Olá mmaico :smiley: ,

Muito obrigado, o código que me passou funcionou! :lol:

Onde você encontrou a solução :?: Olhando apenas no JavaDoc :?:

e ai vininewday,

Sim, mas eu já tinha feito isso antes.

JavaDoc
http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html

Depois eu passei a usar o Mirror para fazer essa parte de reflection, fica muito mais facil e o código mais legivel, se tiver curiosidade dê uma olhada no link:
http://blog.caelum.com.br/mirror-dsl-facilitando-o-uso-da-api-de-reflection/

abraço!