首页 > 代码库 > Java反射机制动态代理
Java反射机制动态代理
package com.kaige123;/** * 程序员 * @author 凯哥 */public interface Chengxuyuan { /** * 写代码方法 */ public void xiedaima();}
package com.kaige123;/** * 程序员接口实现类 * @author 凯哥 */public class ChengxuyuanImpl implements Chengxuyuan { public void xiedaima() { System.out.println("写代码..."); } }
package com.kaige123;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method; /** * 处理类 * @author 凯哥 */public class CxyHandler implements InvocationHandler { //程序员实现对象传递 private Chengxuyuan c; public CxyHandler(Chengxuyuan c) { this.c = c; } /** * 程序员接口的方法只要被调用就会通知到吃方法上 * @param proxy 代理对象 * @param method 告诉你 调用的方法 封装对象 * @param args 参数 */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("方法名称:"+method.getName()); System.out.println("喝个咖啡,先把衣服穿上"); Object obj=method.invoke(c, args);//调用方法 System.out.println("衣服脱了,继续喝咖啡"); return obj; }}
package com.kaige123; import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * 测试类 * @author 凯哥 * */public class Test { public static void main(String[] args) { //实现类对象 ChengxuyuanImpl chengxuyuanImpl = new ChengxuyuanImpl(); //得到反射类 Class classs = chengxuyuanImpl.getClass(); //创建处理类 然后把实现类对象传递 CxyHandler handler = new CxyHandler(chengxuyuanImpl); //开始创建代理对象 然后把代理对象转换成接口类型 Chengxuyuan chengxuyuan = (Chengxuyuan) Proxy.newProxyInstance( classs.getClassLoader(), classs.getInterfaces(), handler); //调用方法 有如 >>>invoke(Object proxy, Method method, Object[] args) >> xiedaima() >>调用完毕 chengxuyuan.xiedaima(); }}
结果:
方法名称:xiedaima喝个咖啡,先把衣服穿上写代码...衣服脱了,继续喝咖啡i
Java反射机制动态代理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。