Junior — Middle
შესაძლებელია კლასის პირადი მეთოდის გამოძახება მის განსაზღვრიდან გარეთ?
sobes.tech AI
პასუხი AI-სგან
Java-ში, კლასის პირადი (private) მეთოდის პირდაპირი გამოძახება მისი განსაზღვრიდან გარეთ შეუძლებელია, რადგან private მოდიფიკატორი შეზღუდავს წვდომას მხოლოდ კლასის შიგნით.
თუმცა, რეფლექსიის დახმარებით, შესაძლებელია წვდომა და გამოძახება პირად მეთოდებზე, მიუხედავად ამ შეზღუდვების. მაგალითად:
import java.lang.reflect.Method;
class MyClass {
private void secret() {
System.out.println("პირადი მეთოდი გამოიძახა");
}
}
public class Test {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Method method = MyClass.class.getDeclaredMethod("secret");
method.setAccessible(true); // შეზღუდვის მოხსნა
method.invoke(obj); // პირადი მეთოდის გამოძახება
}
}
ასე, ჩვეულებრივი გამოძახება შეუძლებელია, მაგრამ რეფლექსია საშუალებას აძლევს ამ შეზღუდვის გადალახვას.