Junior — Middle
È possibile chiamare un metodo privato di una classe dall'esterno della sua definizione?
sobes.tech AI
Risposta dell'AI
In Java, non è possibile chiamare direttamente un metodo privato di una classe dall'esterno della sua definizione, poiché il modificatore private limita l'accesso solo all'interno della stessa classe.
Tuttavia, con l'aiuto della riflessione, è possibile accedere e chiamare metodi privati nonostante le restrizioni. Ad esempio:
import java.lang.reflect.Method;
class MyClass {
private void secret() {
System.out.println("Metodo privato chiamato");
}
}
public class Test {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Method method = MyClass.class.getDeclaredMethod("secret");
method.setAccessible(true); // rimuove la restrizione di accesso
method.invoke(obj); // chiama il metodo privato
}
}
In questo modo, la chiamata normale non è possibile, ma la riflessione permette di aggirare questa restrizione.