Creating a Proxy Object public interface MyInterface { void method(); } public class MyInterfaceImpl implements MyInterface { public void method() { } } public class ProxyClass implements InvocationHandler { Object obj; public ProxyClass(Object o) { obj = o; } public Object invoke(Object proxy, Method m, Object[] args) throws Throwable { Object result = null; try { // do something before the method is called result = m.invoke(obj, args); } catch (InvocationTargetException e) { } catch (Exception e) { } finally { // do something after the method is called } return result; } } // This fragment creates a proxy for a // MyInterface object. MyInterface myintf = (MyInterface)Proxy.newProxyInstance( MyInterface.class.getClassLoader(), new Class[]{MyInterface.class}, new ProxyClass(new MyInterfaceImpl())); // Invoke the method myintf.method();