Sobes.tech
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); // կանչում է մասնավոր մեթոդը
    }
}

Այսպիսով, սովորական կանչը հնարավոր չէ, բայց ռեֆլեկցիան թույլ է տալիս շրջանցել այս սահմանափակումը։