`
l4432848
  • 浏览: 252722 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
喝个咖啡,先把衣服穿上
写代码...
衣服脱了,继续喝咖啡
分享到:
评论

相关推荐

    java反射机制和动态代理的原理

    java反射机制和动态代理的原理,熟悉反射机制和动态代理

    JAVA的反射机制与动态代理

    Java的反射机制与动态代理是Java编程中两个非常重要的高级特性,它们在许多实际场景中发挥着关键作用,如框架开发、插件系统、元数据处理等。下面将详细讲解这两个概念及其应用。 首先,Java的反射机制允许我们在...

    Java反射机制和动态代理

    主要讲述Java反射机制与设计模式之一:代理模式的原理与应用;同时详细讲述了Java对代理模式的支持以及Java中动态代理的原理,应用与实践。

    Java反射机制与动态代理

    总结来说,Java反射机制和动态代理是Java编程中不可或缺的部分,它们极大地扩展了Java的灵活性和可扩展性,使得程序员可以在运行时对程序进行更深层次的控制。了解和熟练掌握这两项技术,对于提高Java开发能力和解决...

    JAVA 反射机制与动态代理ppt

    总的来说,Java反射机制和动态代理是Java平台强大而灵活的特性,它们使得Java程序能够在运行时具有更高的灵活性和可扩展性。然而,使用反射也可能带来性能开销和安全风险,因此在实际应用中需要权衡利弊,合理使用。

    java反射与动态代理笔记

    Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活和动态的代码执行方面发挥着关键作用。本文将深入探讨这两个概念及其在实际开发中的应用。 **Java反射** Java反射API允许程序在运行时检查类、接口...

    Java反射及动态代理

    详细讲解java的reflect包的,阐述反射机制及动态代理的细节问题。其中动态代理部分内容参考网上资料。读完此文,相信会对javaf反射机制有一个完整清楚的了解。尤其应该看看其他中代码举例部分。

    Java反射与动态代理

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类包括`Class`、`Field`、`Method`和`Constructor`,它们分别代表类、...

    JAVA反射机制与动态代理.part04

    JAVA反射机制与动态代理.part04

    java 反射机制与动态代理

    Java反射机制与动态代理是Java编程中的重要概念,它们在软件设计中扮演着核心角色,尤其是在框架开发中。本文将深入探讨这两个主题,以及如何在实际应用中利用它们。 首先,我们来理解Java反射机制。反射是Java的一...

    JAVA反射机制与动态代理

    1. 动态代理原理:动态代理是基于Java反射机制,通过在运行时动态生成实现了特定接口的代理类,以此来实现对原对象的代理。 2. java.lang.reflect.Proxy类:Proxy类提供了创建动态代理类和代理对象的工厂方法。通过...

Global site tag (gtag.js) - Google Analytics