//这是你的原方法
public static Object getProxy(final Object obj,final Advice advice){
Object proxy=Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(),
new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{
advice.beforMethod();
Object temp=method.invoke(obj, args);//传入真实实例对象+参数实例变量组
advice.afterMethod();
//只要让代理类的实例对象调用真实对象的方法就通过此方法
return temp;//返回此方法执行后返回的信息
}
});
return proxy;
}
//按你要求,修改的代码
public static Object getProxy(final Object obj){
Object proxy=Proxy.newProxyInstance(obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(),
new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{
Object temp=method.invoke(obj, args);//传入真实实例对象+参数实例变量组
//只要让代理类的实例对象调用真实对象的方法就通过此方法
return temp;//返回此方法执行后返回的信息
}
});
return proxy;
}
public static void getResult(final Object obj,final Advice advice){
//代理开始
advice.beforMethod();
getProxy(obj);
//代理结束
advice.afterMethod();
}
|