Buenas, pessoal!
Já utilizei várias vezes reflection pra invocar métodos de uma classe dinamicamente, porém nao tinha reparado que nao consigo invocar um método protected, mesmo que a classe que o invoca estiver respeitando as regras do modificador de acesso.
Um exemplo do que ocorreu:
Eu tenho vários frames diferentes que disparam um listener em comum (SimpleBeanListener), porém esses frames são herança direta de JFrame e nao possuem relação entre si. Então para invocar cada frame separadamente e fazê-lo disparar o listener usando reflection eu faço da seguinte forma:
Class<? extends JFrame> frameBeanClass = (Class<? extends JFrame>)Class.forName("client.view.JF"+beanClass.getSimpleName());
JFrame frame = frameBeanClass.newInstance();
Method method = frameBeanClass.getMethod("addSimpleBeanListener", SimpleBeanListener.class);
method.invoke(frame, new SimpleBeanAdapter() { ... });
O detalhe é: o método addSimpleBeanListener é protected nessas classes. Levando em conta que estou respeitando as regras, como falado anteriormente, deveria ocorrer NoSuchMethodException neste caso?