Sobes.tech
Junior — Middle

Hoe roep je de originele methode van het object aan na het toepassen van een proxy?

sobes.tech AI

Antwoord van 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).