码迷,mamicode.com
首页 > 数据库 > 详细

Java反射机制动态代理

时间:2017-06-22 22:58:39      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

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反射机制动态代理

标签:

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
凯哥学堂
加入时间:2016-10-07
  关注此人  发短消息
java学习视频下载:www.kaige123.com
凯哥学堂”关注的人------(0
凯哥学堂”的粉丝们------(1
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!