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.