JDK代理的基本使用

xiaoxiao2021-02-28  112

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(); } }
转载请注明原文地址: https://www.6miu.com/read-75467.html

最新回复(0)