Sobes.tech
Junior — Middle

Lze zavolat soukromou metodu třídy zvenčí její definice?

sobes.tech AI

Odpověď od AI

V jazyce Java nelze přímo volat soukromou metodu třídy z jejího vnějšího prostředí, protože modifikátor private omezuje přístup pouze uvnitř samotné třídy.

Nicméně, pomocí reflexe je možné získat přístup k soukromým metodám a je volat, i přes tato omezení. Například:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Soukromá metoda volána");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // odstraní omezení přístupu
        method.invoke(obj); // volání soukromé metody
    }
}

Tímto způsobem není možné běžně volat metodu, ale reflexe umožňuje obejít toto omezení.