package suanfa;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
class MyHandler implements InvocationHandler{
Star star;
public MyHandler(Star star){
this.star = star;
}
//代理对象的所有方法都来这里进行处理
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object obj = null;
//只对sing做了代理处理,其他的方法不做代理
if("sing".equals(method.getName())){
System.out.println("我是代理,我去找周杰伦");
obj = method.invoke(star, args);
System.out.println("我是代理,我送周杰伦回去");
}else{
obj = method.invoke(star, args);
}
return obj;
}
}
public class Main {
public static void main(String[] args) throws Exception {
Star star = new ZhoJieLun();
Star proxy = (Star) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(),
new Class[]{Star.class},
new MyHandler(star));
proxy.sing();
}
}
JDK代理的基本使用
最新推荐文章于 2023-04-11 19:09:43 发布