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

Каким образом вызвать исходный метод объекта после применения прокси?

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

sobes.tech AI

В Java, если вы используете динамический прокси (например, через java.lang.reflect.Proxy), то вызов метода объекта происходит через реализацию интерфейса InvocationHandler. Чтобы вызвать исходный метод объекта после применения прокси, внутри метода invoke нужно явно вызвать соответствующий метод на оригинальном объекте, который проксируется.

Пример:

public class MyInvocationHandler implements InvocationHandler {
    private final Object original;

    public MyInvocationHandler(Object original) {
        this.original = original;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // Можно добавить дополнительную логику до вызова
        System.out.println("Before method call");

        // Вызов исходного метода на оригинальном объекте
        Object result = method.invoke(original, args);

        // Можно добавить дополнительную логику после вызова
        System.out.println("After method call");

        return result;
    }
}

Таким образом, прокси перехватывает вызов, а внутри invoke вы вызываете исходный метод через method.invoke(original, args).