Object ob=Class.forName(className).NewInstance();ob就是你要生成的对象啦

解决方案 »

  1.   

    如果是相关类,首先可以提取一个接口,例如:
    CommanOperation;然后,用
    CommanOperation comm =(CommanOperation)Class.forName(className).newInstance();
    生成相应的实例,以后可以根据接口作相应的操作。
    如果是一组无关的类,就没有必要动态生成了。
      

  2.   

    搂住的意思是不是生成类文件,然后把.java文件保存在磁盘上,再调用?
    这个可真可以试试,现根据要求生成类文件字符串,再保存到磁盘上,然后再进行编译,再使用楼上的方法newInstance,hoho,不会是真的吧。
      

  3.   

    看看简单工厂模式,我想最适合你啦。
    抽象产品 A 有被实现的三个具体产品B C D然后由一个具本工厂E的一个静态方法factory(String s):A
    根据参数s来创建B C D 的实例,那几个实例就会有你的需要的不同的方法了。
      

  4.   

    java.lang.reflect.Method
    java.lang.reflect.Constructor
    java.lang.reflect.Member
      

  5.   

    反射好像不是解决这个问题的钥匙吧。reflect 只能得到既定的类的实例和方法。并不能当动态创建的。不是吗?
      

  6.   

    难点在哪呢不就是用户根据规则订制java文件么  规则是你定的 你怎么生成都行了
    然后调用sun.tools.javac.*中的类编译   然后用ClassLoader导入然后
    Object ob=Class.forName(className).NewInstance();然后
    java.lang.reflect.Method
    java.lang.reflect.Constructor
    java.lang.reflect.Member
      

  7.   

    谢谢 jokerjava 以及其他的朋友给我很多启示,和解决答案。
      

  8.   

    to kypfos:
    因为许多问题是根据实际情况需要而提出的,其实并非什么都是动态的,那样子也没办法使用,
    比方说,用户需要一些能够自定义的运算规则,由这些规则以及以前预定义的运算类(基础规则)一起能算出最终结果,那这些由用户制定的函数怎样处理?
    我想把他们放到一个ObjectPool中,而这些对象又不能预先定义,所以我想到了动态生成未知的类,虽然有点激进,但是觉得这样做能和以前的运算类结合的很好,使用也差不多。其他朋友觉得有什么想法?