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); // կանչում է մասնավոր մեթոդը
}
}
Այսպիսով, սովորական կանչը հնարավոր չէ, բայց ռեֆլեկցիան թույլ է տալիս շրջանցել այս սահմանափակումը։