Converter Class para outra classe

5 respostas
R

Alguém sabe se tem como fazer cast uma classe Class em outra classe.??

Por exemplo;;

Class c = Produto.class . . //codigo para preenche os metodos set . .

pegar o objeto “c” e converter novamente a Produto com tudo dentro…

Alguem ajuda??

Att

5 Respostas

M

Como asssim “com tudo dentro”?

Voce nao vai ter o estado anterior do objeto dessa forma.

Se sua duvida é ter o objeto voce pode usar o newInstance da Class que invoca o construtor sem argumentos da classe.

Class<Produto> c = Produto.class;
Produto p = c.newInstance();

Caso tenha parametros voce pode usar o Class.getConstructor passando os Class do tipo dos argumentos depois invocalo com algum valor.
Algo como:

Class<Produto> c = Produto.class;
Constructor ct = c.getConstructor(String.class, Double.class);//Supondo que tenha um construtor como Produto(String nome, double valor)
Produto p = ct.newInstance("Produto A", 1500.15);
R

Mark_Ameba ,

A questao é o seguinte… estou fazendo um componente de persistencia de banco de dados… Quando eu disse que preencho os metodos SET, estava me referindo ao código de pegar os dados do banco e colocar nos metodos SET… assim terei o objeto “produto” preenchido com os dados do banco. Logo depois, minha ideia é retornar a classe Produto dentro de um ArrayList para quem usar meu componente puder manipular… entendeu?? Só está faltando eu converter para Produto novamente… o resto eu ja fiz…

T++

M

Voce não consegue ter os objetos com os valores preenchidos diretamente do Class se é isso que pretende fazer.

Mas se quiser saber como setar os valores via Reflection posso te ajudar.

R
Method[] m = classe.getMethods();

                            if (m[j].getName().equalsIgnoreCase("set" + meta.getColumnLabel(i + 1))) {

                            Object[] parametros = {rs.getObject(meta.getColumnLabel(i + 1)).toString()};
                            m[j].invoke(objeto, parametros);

Perceba que "classe" é do tipo "Produto";
Veja que na ultima linha eu coloco os dados do banco, nos sets;

Agora eu posso retorna "classe" em um arraylist, correto... só que quando eu uso iterator e faço o cast para "Produto" dá esse erro:
Class cannot be cast to projeto.rodrigo.projetopersistenca.Produto

Eu nao sei como que faço para retornar "Produto" novamente....

Obg

M

Voce nao pode retornar os objetos Class. Eles representam sua classe mas não desse modo que voce quer usar.

Essa variavel objeto que é o objeto que deve estar no List.

Poste esse código completo.

Criado 16 de julho de 2009
Ultima resposta 16 de jul. de 2009
Respostas 5
Participantes 2