reflection com métdos privados  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
sunshine
JavaChild
[Avatar]

Membro desde: 28/09/2004 18:53:15
Mensagens: 111
Offline

Pessoal,

há possibilidade de executar um método privado através de reflexão, sendo que a execução não seja na mesma classe do método?
Lembrem isto é somente um exemplo o set e get privado.
Ex.:



test


erro


pfilipak
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline


Former LIPE.
[ICQ]
sunshine
JavaChild
[Avatar]

Membro desde: 28/09/2004 18:53:15
Mensagens: 111
Offline

vlw exatamente o q eu queria!!!!!!!!!

pfilipak
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Por default, não. Se tentar acessar um membro private, protected ou package-private, receberá uma IllegalAccessException.

Porém, as classes Constructor, Field e Method extendem java.lang.reflect.AccessibleObject que tem o método setAccessible. Se quiser contornar esta limitação, você deve usar setAccessible antes de invocar o método.

Faça um teste.

Para impedir que algum outro desenvolvedor da sua equipe use este método para quebrar o encapsulamento, você precisa de um security.manager.

Coloque no arquivo (C:\Program Files\Java\jre1.6.0\lib\security) java.policy:
permission java.lang.reflect.ReflectPermission supressAccessChecks

Teste executando java -cp . -Djava.security.manager suaClasseComMain

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team