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());
R
ralphsilver
É 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í:
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());
Se o field for private, vai dar pau!!!
R
Rodrigo_Sasaki
Eu sei, mas existe solução pra isso também.
A dúvida do autor do tópico foi: Tem como setar como null um campo?
Só exemplifiquei uma alternativa.
R
ralphsilver
digaoneves:
Eu sei, mas existe solução pra isso também.
A dúvida do autor do tópico foi: Tem como setar como null um campo?
Só exemplifiquei uma alternativa.
Hehehehehe nisso vc tem razão!!
P
pmlm
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.
Não testei mas penso que assim funcionará
m.invoke(p,newObject[]{null});
M
mateusviccari
opa valeu galera fui testando de toda forma possivel aqui e desse jeito tambem funcionou:
m.invoke(p,newString[1]);
R
Rodrigo_Sasaki
mateusviccari:
opa valeu galera fui testando de toda forma possivel aqui e desse jeito tambem funcionou:
m.invoke(p, new String[1]);
É, é uma solução equivalente à do pmlm
R
ralphsilver
mateusviccari:
opa valeu galera fui testando de toda forma possivel aqui e desse jeito tambem funcionou:
m.invoke(p, new String[1]);
Também funciona… pois vc especificou que tem que mandar um vetor como parâmetro…
Eu testei o que eu te mandei… e funciona também (fazer cast no null)
R
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
R
ralphsilver
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
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
R
renanreismartins
bom saber, n usei a commons-beanutils ainda
abrassss
R
ralphsilver
renanreismartins:
bom saber, n usei a commons-beanutils ainda
abrassss
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
M
mateusviccari
ralphsilver:
renanreismartins:
bom saber, n usei a commons-beanutils ainda
abrassss
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
Como eu faço pra usar essa API tendo o hibernate configurado no projeto?
R
ralphsilver
mateusviccari:
ralphsilver:
renanreismartins:
bom saber, n usei a commons-beanutils ainda
abrassss
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
Como eu faço pra usar essa API tendo o hibernate configurado no projeto?
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”