如果希望将平时我们使用的.class文件的内容不存在磁盘上而存在数据库里,要如何实现比较好?谢谢。

解决方案 »

  1.   

    存到BLOB里或许可以,然后在存一个包名字,要加载类的时候再从数据库中取出来放到指定目录下,用反射机制实例化对象
      

  2.   

    答:其实不仅仅是将.class文件的内容存在数据库里,还可以直接放在内存数组中,或者干脆就放在另外一台计算机上,到时再从它那儿取出来.
    这一切如何实现?
    常见的做法是:
    自定义一个MyClassLoader extends ClassLoader ,然后在方法:
    1)      private byte[] loadClassData(String name) {
                 //你的代码:从数据库中,或从内存的数组中,或干脆从另外一台计算机上,读出类的二进制数据,
               //放入字节数组中,返回这个字节数组
             }2)在方法中:
        public Class findClass(String name) {
                 byte[] b = loadClassData(name);
           //调用前面你定义的loadClassData(String name),这个name就是如:mypackage.p1.MyClass之类的你的类名
                 return defineClass(name, b, 0, b.length);
             }3)通过Object o= new MyClassLoader().loadClass(yourname, true).newInstance();装入.
    以上仅供楼主参考.