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
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
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);
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++
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.
[code] 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);[/code]
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
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.