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

动态java代码的使用方法

来源: 作者:佚名 出处:巧巧读书 2008-03-25 进入讨论组

 public class PostmanImpl implements Postman {

    private PrintStream output;
   
    public PostmanImpl() throws IOException {
       output = new PrintStream(new FileOutputStream("msg.txt"));
    }

    public void deliverMessage(String msg) {
        output.println("[Postman] " + msg);
        output.flush();
    }
}


    在程序运行中,我们就是要通过动态修改PostmanImpl 来观察这个JSP一样的现象。 

    3,访问服务 

    这里要介绍一些访问服务的main程序,以便看到这种方式的优越性。

 public class PostmanApp {

    public static void main(String[] args) throws Exception {
        BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
        Postman postman = getPostman();
        while (true) {
            System.out.print("Enter a message: ");
            String msg = sysin.readLine();
            postman.deliverMessage(msg);
        }
    }

    private static Postman getPostman() {
        DynaCode dynacode = new DynaCode();
        dynacode.addSourceDir(new File("dynacode"));
        return (Postman) dynacode.newProxyInstance(Postman.class,
                "sample.PostmanImpl");
    }
}


    我们可以看到获取PostMan对象,只是在初始化的过程中做过一次,后边只是访问其deliverMessage()方法,    而 sample.PostmanImpl这一实现的动态改变完全被掩藏在这个小小框架的后边。Java文件改变后的编译、重新载入、对象实例化和方法的调用过程完全不可见,是不是很神奇的实现。

    4,DynaCode 

    看了这样的主程序,你可能会首先看一下DynaCode的实现,然而我不准备详细讲述DynaCode的实现,尽管它的实现最为复杂。因为 DynaCode只是简单的包装了java.lang.reflect.Proxy,通过添加几个处理class路径和java路径的方法辅助来完成工作的,我不想重点介绍java反射机制的,因此我们只来看DynaCode一个重要的方法。

 public Object newProxyInstance(Class interfaceClass, String implClassName)
            throws RuntimeException {
        MyInvocationHandler handler = new MyInvocationHandler(
                implClassName);
        return Proxy.newProxyInstance(interfaceClass.getClassLoader(),
                new Class[] { interfaceClass }, handler);
}

     好了,看到了吧,DynaCode只是在内部做了一个InvocationHandler实现,并简单的使用了Proxy的newProxyInstance()方法。

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