import java.lang.reflect.*; interface Twas { Object brillig(); } interface Slithy { void toves(int gyre); } public class ProxyTest { static class MyInvocationHandler implements InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) { System.out.println (method.getDeclaringClass()); System.out.println (args == null ? args : args.getClass().getName()); return this; } } public static void main(String[] argv) throws InstantiationException, IllegalAccessException { Twas wabe = (Twas)Proxy.newProxyInstance(ProxyTest.class.getClassLoader(), new Class[] { Slithy.class, Twas.class }, new MyInvocationHandler()); wabe.brillig(); ((Slithy)wabe).toves(2); } }