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.