Sobes.tech
Назад к вопросам
Junior — Middle
99

Можно ли вызвать приватный метод класса извне его определения?

Ответ от нейросети

sobes.tech AI

В Java вызвать приватный метод класса извне его определения напрямую нельзя, так как модификатор private ограничивает доступ только внутри самого класса.

Однако, с помощью рефлексии можно получить доступ к приватным методам и вызвать их, несмотря на ограничения. Например:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Private method called");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // снимаем ограничение доступа
        method.invoke(obj); // вызов приватного метода
    }
}

Таким образом, обычный вызов невозможен, но рефлексия позволяет обойти это ограничение.