package com.mei;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class JavaProxy {
Object originalObj;
public JavaProxy(Object obj){
this.originalObj = obj;
}
public <T> T getProxy() {
return (T) Proxy.newProxyInstance(originalObj.getClass().getClassLoader(), originalObj.getClass().getInterfaces(), new InvocationHandler(){
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("========begin process=======");
Object object = method.invoke(originalObj, args);
System.out.println("========end process=======");
return object;
}
});
}
public static final void main(String[] arg1){
Orign orignal = new JavaProxy(new OraignalImp1()).getProxy();
orignal.sayHello();
}
interface Orign{
public void sayHello();
}
static class OraignalImp1 implements Orign{
public void sayHello(){
System.out.println("hello boy!");
}
}
}