Meu problema é o seguinte, preciso pegar um objeto qualquer, obter as variáveis deste objeto e instanciar novas variáveis de acordo com os mesmos tipos das variáveis deste objeto.
Desse modo não gerou excessão, porém eu teria que ficar verificando pra todos os tipos…
T
thingol
Não pode haver referências para tipos primitivos. Digamos que você tenha um objeto Class que contenha o valor int.class (não Integer.class, que é outra coisa). Não há construtores definidos para o tipo int.
importjava.lang.reflect.*;classTesteAlocacaoTiposPrimitivos{// Este programa prova que tipos primitivos não têm construtores // que possam ser chamados via reflection, e que // tipos primitivos são distintos de seus respectivos wrappers,// mesmo em reflection.publicstaticvoidmain(String[]args)throwsException{// Primeiramente provando que tipos primitivos são distintos// (mesmo via reflection) de seus respectivos wrappers.Class<?>klass1=int.class;Class<?>klass2=Integer.class;System.out.println(klass1.equals(klass2));// imprime false// Como Integer não tem um construtor default (sem parâmetros), vamos// criar um Integer com o valor -2:Constructor<?>ci2=klass2.getDeclaredConstructor(int.class);Integeri2=(Integer)ci2.newInstance(-2);System.out.println(i2);// imprime -2// Tipos primitivos não têm construtores que possam ser chamados via reflection.Constructor[]ci1=klass1.getConstructors();System.out.println(ci1.length);// imprime 0, indicando que não existem construtores válidos}}
Desse modo não gerou excessão, porém eu teria que ficar verificando pra todos os tipos…
É meio braçal mesmo, mas você poderia olhar a documentação, não? Class.isPrimitive
franciscossouza
Reflection é tão bonito e legal, pra que sujar a brincadeira com tipos primitivos?
T
thingol
Se você quer “clonar objetos”, note que nem todas as classes têm um construtor default (ou seja, nem sempre é possível usar newInstance). Muitas vezes você pode usar o método clone mesmo (como é o caso de todos os arrays, e de todos os wrappers).
D
danilocsf
Eu olhei a documentação, mas olhei em para o Field, Type…
As vezes vcs podem me ajudar de outra maneira…
O que eu estava precisando fazer é um TableModel genérico, minha idéia era criar uma anotação onde os dados que deveriam aparecer na tabela possuissem esta anotação e então fosse possível montar a tabela com os dados passados em um Array de qualquer objeto.
Porém pra eu recuperar os dados precisaria saber que tipo é cada dado…