Sim, você pode manipular o Field diretamente.Foo foo = new Foo();
foo.setName("Foo");
System.out.println(foo.getName());
Field field = Foo.class.getDeclaredField("name");
field.set(foo, null);
System.out.println(foo.getName());
É o seguinte: você está deixando o reflection decidir por você o método que ele vai chamar…
o invoke tem várias chamadas como enviar um Object como parametro ou enviar um array de Object…
No seu caso… vc tem qeu fazer o cast no null para ele saber exatamente qual ele vai usar… ele deve estar tentando invocar o que tem array de objects aí:
[quote=digaoneves]Sim, você pode manipular o Field diretamente.Foo foo = new Foo();
foo.setName("Foo");
System.out.println(foo.getName());
Field field = Foo.class.getDeclaredField("name");
field.set(foo, null);
System.out.println(foo.getName());[/quote]
O método invoke recebe dois parâmetros, o objecto e um array de parâmetros. Ao passar null, estás a passar o array como null e não um array com um elemento null, que é o que é pretendido.
[quote=renanreismartins]sei que não foi a pergunta inicial, mas vi que estão fazendo reflection na mao. E isso dói…
recomendo mto dar uma olhada no mirror dsl, utilizo uso intenso de reflection aqui e tem me ajudado mto
abrass[/quote]
Vou dar uma olhada… de qualquer forma… apenas fui no sentido da dúvida do nosso amigo… mas normalmente para trabalhar com reflections eu utilizo commons-beanutils
[quote=renanreismartins]bom saber, n usei a commons-beanutils ainda
abrassss[/quote]
O bom de usar ele é que é a api padrão que os grandes frameworks utilizam… aí não precisa ficar preocupado em incluir eles nas dependências do projeto, porque normalmente eles já são incluídas quando se incluem frameworks como spring, hibernate e jsf
[quote=ralphsilver][quote=renanreismartins]bom saber, n usei a commons-beanutils ainda
abrassss[/quote]
O bom de usar ele é que é a api padrão que os grandes frameworks utilizam… aí não precisa ficar preocupado em incluir eles nas dependências do projeto, porque normalmente eles já são incluídas quando se incluem frameworks como spring, hibernate e jsf[/quote]
Como eu faço pra usar essa API tendo o hibernate configurado no projeto?
[quote=mateusviccari][quote=ralphsilver][quote=renanreismartins]bom saber, n usei a commons-beanutils ainda
abrassss[/quote]
O bom de usar ele é que é a api padrão que os grandes frameworks utilizam… aí não precisa ficar preocupado em incluir eles nas dependências do projeto, porque normalmente eles já são incluídas quando se incluem frameworks como spring, hibernate e jsf[/quote]
Como eu faço pra usar essa API tendo o hibernate configurado no projeto?[/quote]
Assim
PropertyUtils.setProperty(p, "nome", "value");
Leve em conta que ele serve para ser usado com padrão java bean… então… para ele setar o atributo nome… ele vai invocar o método “setNome”… assim como o getProperty
PropertyUtils.getProperty(p, "nome");
que vai pegar o dado do atributo através do método “getNome”