Java反射机制动态代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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反射机制动态代理的主要内容,如果未能解决你的问题,请参考以下文章

java反射机制应用之动态代理

java反射和动态代理有啥关系

简谈Java 反射机制,动态代理

简谈Java 反射机制,动态代理

java深入分析Java反射-动态代理 proxy

深入了解Java动态代理与反射机制