Sobes.tech
Junior — Middle

É possível chamar um método privado de uma classe de fora da sua definição?

sobes.tech IA

Resposta da IA

Em Java, não é possível chamar diretamente um método privado de uma classe de fora da sua definição, pois o modificador private limita o acesso apenas dentro da própria classe.

No entanto, com a ajuda da reflexão, é possível aceder e invocar métodos privados apesar das restrições. Por exemplo:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Método privado chamado");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // remove a restrição de acesso
        method.invoke(obj); // invoca o método privado
    }
}

Assim, a chamada normal não é possível, mas a reflexão permite contornar essa restrição.