Sobes.tech
Junior — Middle

Bir sinifin xüsusi metodunu onun tərifindən kənarda çağırmaq mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da, bir sinfin xüsusi (private) metodunu onun tərifindən kənarda birbaşa çağırmaq mümkün deyil, çünki private modifikatoru girişə yalnız sinf daxilində məhdudiyyət qoyur.

Lakin, refleksiya vasitəsilə, bu məhdudiyyətlərə baxmayaraq, xüsusi metodlara giriş və onları çağırmaq mümkündür. Məsələn:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Xüsusi metod çağırıldı");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // giriş məhdudiyyətini aradan qaldırır
        method.invoke(obj); // xüsusi metodu çağırır
    }
}

Beləliklə, adi çağırış mümkün deyil, lakin refleksiya bu məhdudiyyəti aşmağa imkan verir.