Junior — Middle
Czy można wywołać prywatną metodę klasy spoza jej definicji?
sobes.tech AI
Odpowiedź od AI
W Javie nie można wywołać metody prywatnej klasy spoza jej definicji bezpośrednio, ponieważ modyfikator private ogranicza dostęp tylko do wnętrza samej klasy.
Jednak za pomocą refleksji można uzyskać dostęp do metod prywatnych i wywołać je, pomimo tych ograniczeń. Na przykład:
import java.lang.reflect.Method;
class MyClass {
private void secret() {
System.out.println("Wywołano metodę prywatną");
}
}
public class Test {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Method method = MyClass.class.getDeclaredMethod("secret");
method.setAccessible(true); // znosi ograniczenie dostępu
method.invoke(obj); // wywołanie metody prywatnej
}
}
W ten sposób zwykłe wywołanie jest niemożliwe, ale refleksja pozwala obejść to ograniczenie.