Re: Dynamic method invocation on Proxy object?
On 08/02/12 08:19, Sebastian wrote:
However, when delegate is itself a proxy, then delegate.getClass()
will give me Proxy,
Are you sure? I get $Proxy0 from this:
import java.lang.reflect.*;
public class GetProxyClass {
public static void main(String[] args) throws Exception {
ClassLoader classLoader =
ClassLoader.getSystemClassLoader();
InvocationHandler behaviour = new InvocationHandler() {
public Object invoke(Object proxy, Method method,
Object[] args) {
System.out.println("Called " + method);
return null;
}
};
Object proxy =
Proxy.newProxyInstance(classLoader,
new Class<?>[] { Runnable.class },
behaviour);
Class<?> proxyClass = proxy.getClass();
System.out.println("Proxy class is: " + proxyClass);
Method m = proxyClass.getMethod("run", new Class<?>[0]);
((Runnable) proxy).run();
m.invoke(proxy);
}
}
Output:
Proxy class is: class $Proxy0
Called public abstract void java.lang.Runnable.run()
Called public abstract void java.lang.Runnable.run()
It also demonstrates a method on the implemented interface being looked
up and invoked.
--
ss at comp dot lancs dot ac dot uk