Type the InvocationHandler.invoke signature
Type the InvocationHandler.invoke signature
Answer
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable { return m.invoke(real, args); }
Every call on a dynamic proxy is funnelled into invoke(proxy, method, args). The handler typically delegates to the real target with m.invoke(real, args), wrapping behaviour (logging, timing) around the call.