Sobes.tech
Junior — Middle

Може ли да се позове приватна метода класе изван његове дефиниције?

sobes.tech АИ

Одговор од АИ

U Javi, nije moguće direktno pozvati privatni metod klase izvan njegove definicije, jer modifikator private ograničava pristup samo unutar same klase.

Međutim, pomoću refleksije, moguće je pristupiti i pozvati privatne metode uprkos tim ograničenjima. Na primer:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Privatni metod pozvan");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // uklanja ograničenje pristupa
        method.invoke(obj); // poziva privatni metod
    }
}

Na ovaj način, običan poziv nije moguć, ali refleksija omogućava zaobilaženje tog ograničenja.