频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

动态java代码的使用方法

来源: 作者:佚名 出处:巧巧读书 2008-03-25 进入讨论组
上一页 1 2 3 
    5,InvocationHandler实现

    根据上面提到的java的内建代理模式,要实现一个InvocationHandler,下面这段代码展示了MyInvocationHandler 的主要部分:

    private class MyInvocationHandler implements InvocationHandler { String backendClassName;//实际的类名Object backend;//实际的类对象public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { /** *  在第一载入的时候通过loadClass来载入所需要的服务实现对象,后边每次检查java文件是否被修改过,*  如果被修改就unload当前的对象,编译并重新载入该类。

    */ Class clz = loadClass(backendClassName);if (backend.getClass() != clz) { backend = newDynaCodeInstance(clz);

    }

    // 调用有效的对象的方法return method.invoke(backend, args);}在MyInvocationHandler中保存了实现接口的类名和该类的一个对象,该对象也就是通过newDynaCodeInstance()方法得到的对象。在每一次调用该对象的方法的时候,java的Proxy机制保证了系统会自动调用MyInvocationHandler的invoke方法。

    这里采用反射进行动态载入的程序,调用的实际工作是在InvocationHandler的invoke方法中做的,因此InvocationHandler要保存实际的对象。

    代理模式的好处是从使用者看来如同调用实际的对象是一样的,而实际上可以通过代理对象,程序可以动态采用不同的接口实现来完成工作,这一过程只需要在Proxy.newProxyInstance()中给定不同的实现类即可。

更多文章 更多内容请看Java环境安装配置Java编程开发手册Java的类专题,或进入讨论组讨论。
上一页 1 2 3 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章