请查阅reflect(反射)相关资料

解决方案 »

  1.   

    动态创建一个类可以用:
    Class.forName(类)
    如:
    Class.forName("COM.ibm.db2.jdbc.app.DB2Driver")
      

  2.   

    看看反射原理,这个功能在java应用很多。
      

  3.   

    动态创建一个类,并运行
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.PrintWriter;
    import java.lang.reflect.Method;
    import com.sun.tools.javac.Main;/**
    * 动态执行JAVA示例
    * Create on 2003/04/21
    * 调用方法: java ExecJava 要执行的JAVA语句,例如:java ExecJava System.out.println("123");
    * @author memphis.guo(email:[email protected])
    */public class ExecJava
    {
     public static void runJava(String code)
     {
       File file;
       Main javac = new Main();
       String classname = "";
       String filename = "";
       try
       {
        //在当前目录下产生一个临时JAVA文件
         file =
           File.createTempFile(
             "JavaRuntime",
             ".java",
             new File(System.getProperty("user.dir")));
        //当程序离开时删除这个临时文件
         file.deleteOnExit();
         filename = file.getName();
         classname = getClassName(filename);     //写临时文件
         PrintWriter out = new PrintWriter(new FileOutputStream(file));
         out.println("public class " + classname + "\r\n{");
         out.println("\tpublic static void main(String argc[])\r\n\t{");
         out.println(code);
         out.println("\t}\r\n}");
         out.flush();
         out.close();
    //编译执行临时文件
         String[] args =
           new String[] { "-d", System.getProperty("user.dir"), filename };
         int status = javac.compile(args);     new File(file.getParent(), classname + ".class").deleteOnExit();
         Class cls = Class.forName(classname);
         Method main = cls.getMethod("main", new Class[] { String[].class });
         main.invoke(null, new Object[] { new String[0] });
       }
       catch (Exception e)
       {
         System.out.println(e);
       }
     } /**根据一个java源文件名获得类名*/
     private static String getClassName(String filename)
     {
       return filename.substring(0, filename.length() - 5);
     }public static void main(String args[])
    {
    runJava(args[0]);
    }}
      

  4.   

    你可以使用jakarta的Commons中的 BeanUtils组件 BeanUtils组件 动态的创建和存取javaBean。通过该组件可以动态的创建 javabean,和javabean里面的getter、setter方法。一个简单的例子:package com.commonstest.beanutils;import org.apache.commons.beanutils.BasicDynaClass;
    import org.apache.commons.beanutils.DynaProperty;
    import org.apache.commons.beanutils.DynaBean;
    import org.apache.commons.beanutils.PropertyUtils;/**
     * 
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class DynaBeanUsage { public static void main(String[] args)  throws Exception  {
      
      //定义动态类的属性== define properties for dynamic class
      DynaProperty[] props = new DynaProperty[]{new DynaProperty("aField",java.lang.String.class)};
      
      //动态创建一个 AnotherBean 类 里面包括一个aField 属性
      BasicDynaClass dynaclass = new BasicDynaClass("AnotherBean",null,props);
      DynaBean dBean = dynaclass.newInstance();
      
      //设置 AnotherBean 类的 aField属性值为11111
      PropertyUtils.setProperty(dBean,"aField","11111");
      
      System.out.println("value:"+PropertyUtils.getProperty(dBean,"aField"));
      
     }

     
      

  5.   

    非常感谢谢上面的朋友贴出来的例子! 另外小弟我因为刚上csdn不久, 这里好象有一个分数系统,我如果给分给别人怎么给啊?怎么总是说分数总和不对?