Sobes.tech
Junior — Middle

Je možné zavolať súkromnú metódu triedy zvonku jej definície?

sobes.tech AI

Odpoveď od AI

V Jave nie je možné priamo volať súkromnú metódu triedy zvonku jej definície, pretože modifikátor private obmedzuje prístup iba v rámci samotnej triedy.

Avšak, pomocou reflexie je možné získať prístup k súkromným metódam a volať ich, aj napriek týmto obmedzeniam. Napríklad:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Súkromná metóda volaná");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // odstraňuje obmedzenie prístupu
        method.invoke(obj); // volanie súkromnej metódy
    }
}

Týmto spôsobom nie je možné bežne volať metódu, ale reflexia umožňuje obísť toto obmedzenie.