Sobes.tech
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.