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í.