Sobes.tech
Junior — Middle

Se poate apela o metodă privată a unei clase din afara definiției acesteia?

sobes.tech AI

Răspuns de la AI

În Java, nu se poate apela direct o metodă privată a unei clase din afara definiției sale, deoarece modificatorul private limitează accesul doar în interiorul clasei.

Cu toate acestea, cu ajutorul reflecției, este posibil să accesezi și să apelezi metode private, în ciuda acestor restricții. De exemplu:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Metodă privată apelată");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // elimină restricția de acces
        method.invoke(obj); // apelează metoda privată
    }
}

Astfel, apelul normal nu este posibil, dar reflecția permite ocolirea acestei restricții.