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.