Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

setAccessible(...) da classe Method

quando faço:

    Method m = subControleClasse.getDeclaredMethod("metodoSubControle1");
     m.setAccessible(true);

Quer dizer que o método obtido da classe SubControle, ficará publico durante TODA a execução do programa ?

Tem uma parte no comentario do método que diz o seguinte:

"A value of {@code false} indicates that the reflected object should enforce Java language access checks. "

Tentei passar false, para um método que era public na esperança de receber o "IllegalAccessException", porém foi executado normalmente, pensei que iria mudar para privado. Sempre que eu tentar fazer isso o método será executado normalmente ?

1 resposta
solução!

Com setAccessible() você alteraa o comportamento da instância subControleClasse, mas não o campo real da classe. Um valor de true indica que o objeto deve suprimir verificações para o controle de acesso quando for usado.

Usando "Field.setAccessible(true)" você remove a proteção do campo privado. Você volta o campo ao estado original com "Field.setAccessible(false)".

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software