据提供的ClassName, field name, method name and parameters' name 使用java.lang.reflect包,创建真正的“动态”类和实例。

解决方案 »

  1.   

    参照这里 Java反射 比较详细
    http://hejianjie.javaeye.com/blog/136205
      

  2.   

    不明白楼主这是散分贴,还是求代码?
    1.package com.zjx.reflect.third;   
    2.  
    3.import java.lang.reflect.Method;   
    4.  
    5./**   
    6. * 用反射机制调用对象的方法   
    7. * @author Xian-JZ   
    8. *   
    9. */   
    10.public class InvokeTester {   
    11.    public int add(int param1, int param2) {   
    12.        return param1 + param2;   
    13.    }   
    14.    
    15.    public String echo(String msg) {   
    16.        return "echo: " + msg;   
    17.    }   
    18.    
    19.    public static void main(String[] args) throws Exception {   
    20.        Class<?> classType = InvokeTester.class;   
    21.        Object invokeTester = classType.newInstance();   
    22.    
    23.        // Object invokeTester = classType.getConstructor(new   
    24.        // Class[]{}).newInstance(new Object[]{});   
    25.    
    26.    
    27.        //获取InvokeTester类的add()方法   
    28.        Method addMethod = classType.getMethod("add", new Class[]{int.class, int.class});   
    29.        //调用invokeTester对象上的add()方法   
    30.        Object result = addMethod.invoke(invokeTester, new Object[]{new Integer(100), new Integer(200)});   
    31.        System.out.println((Integer) result);   
    32.    
    33.    
    34.        //获取InvokeTester类的echo()方法   
    35.        Method echoMethod = classType.getMethod("echo", new Class[]{String.class});   
    36.        //调用invokeTester对象的echo()方法   
    37.        result = echoMethod.invoke(invokeTester, new Object[]{"Hello"});   
    38.        System.out.println((String) result);   
    39.    }   
    40./**   
    41. * Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象,   
    42. * 如果参数为基本类型数据,必须转换为相应的包装类型的对象。   
    43. * invoke()方法的返回值总是对象,如果实际被调用的方法的返回类型是基本类型数据,   
    44. * 那么invoke()方法会把它转换为相应的包装类型的对象,再将其返回。   
    45. */   
    46.} 
      

  3.   

    反射不是动态创建类,是使用class文件
      

  4.   

    我的需求是,类本身不存在文件中,就是没有class文件。在执行代码的时候创建一个类。自己编译、
      

  5.   

    什么意思。。
    不明白LZ的意思。
    Reflect包做不到LZ要的功能吧?
    你说的那个动态创建JAVA
    我觉得应该是先根据给出的条件生成内容
    然后io流生成文件,最后用Runtime来编译。
    和反射没啥关系吧?
      

  6.   

    小弟!你的问题不好解决,首先要明白弄懂了你的问题就可以写一门语言了!其次退一万步说可以的话,也得要研究java源码,jvm,编译原理,深入java虚拟机等等东西。
      

  7.   

    生成.java 然后用tools jar包里的api编译生成.class
    http://mopishv0.blog.163.com/blog/static/54455932201010161162058/
    然后再用类加载器加载
    下面是加载jar的 原理相似
    http://mopishv0.blog.163.com/blog/static/5445593220101016112946307/
      

  8.   

    用IO写XXX.java文件,写完后,调用系统的javac命令,这时已经有XXX.class文件出来了,再然后类加载反射,就是上面说的去做
      

  9.   

    我觉得这个问题没有你说的这么难,只是暂时我还没有找到合适的jar和资料。