Junior — Middle
Kas on võimalik välja kutsuda klassi privaatne meetod selle definitsioonist väljaspool?
sobes.tech AI
Vastus AI-lt
Java-s ei ole võimalik otse kutsuda klassi privaatset meetodit väljaspool selle määratlust, kuna private modifikaator piirab juurdepääsu ainult klassi sees.
Kuid refleksiooni abil on võimalik pääseda ligi ja kutsuda privaatseid meetodeid, hoolimata nendest piirangutest. Näiteks:
import java.lang.reflect.Method;
class MyClass {
private void secret() {
System.out.println("Privaatne meetod kutsutud");
}
}
public class Test {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Method method = MyClass.class.getDeclaredMethod("secret");
method.setAccessible(true); // eemaldab juurdepääsupiirangu
method.invoke(obj); // kutsub privaatset meetodit
}
}
Seega, tavaline kutsumine ei ole võimalik, kuid refleksioon võimaldab selle piirangu ületada.