import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
interface MyInterface {
void method();
}
class MyInterfaceImpl implements MyInterface {
public void method() {
System.out.println("method");
}
}
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 {
System.out.println("before the method is called ");
result = m.invoke(obj, args);
} catch (Exception eBj) {
} finally {
System.out.println("after the method is called");
}
return result;
}
}
public class Main {
public static void main(String[] argv) throws Exception {
MyInterface myintf = (MyInterface) Proxy.newProxyInstance(MyInterface.class.getClassLoader(),
new Class[] { MyInterface.class }, new ProxyClass(new MyInterfaceImpl()));
myintf.method();
}
}