J2SE论坛网»J2SE技术»求助!怎样根据输入的参数动态的生成类与对象

求助!怎样根据输入的参数动态的生成类与对象

问?:
输入是一个list数组,里面的成员是String对象,现在要根据这个list数组自动生成一个javabean,javabean的成员是list数组的成员,而且list数组的长度不是固定的,每次的输入都可能不同。听说用java反射机制可以实现,但在网上找了很久也没找到好点的材料,小生不才,望各位csdn的xdjm能帮帮我..
答!: 1:
路过,友情up...
答!: 2:
以我现在的理解我觉得做不到.
反射我的理解是本来某个类是已经定义好了并且客观存在的, 只是我们不知道他的具体信息, 但在这种情况下我们依然可以创建这个类或调用他的方法. 但目前你这个题目的需求是事先连这个类都并不存在, 而是依据输入的参数来创建他, 这种需求可以实现吗? 期待有高人指点.
答!: 3:
唉,一个复杂的问题....
关于动态类生成...目前有2种可能的方法
1.生成类的源文件,编译后动态载入......jsp就是这么做的
2.用ASM一类工具修改字节码,在内存中操作类....

麻烦啊麻烦
答!: 4:
用BeanUtils可以生成动态javabean,已经解决了
谢谢各位的关照~~
答!: 5:
楼主拿分来吧


import java.io.*;
import java.util.List;
import java.util.ArrayList;
public class BeanFactory {

public static String BeanBuild(String beanName,List valueList){
String returnStr="";
returnStr+="public class "+beanName+"{\n";
for(int i=0;i<valueList.size();i++){
returnStr+="String "+(String)valueList.get(i)+";\n";
}
for(int i=0;i<valueList.size();i++){
returnStr+="public void set"+(String)valueList.get(i)+"(String value){\n"+
"this."+(String)valueList.get(i)+"=value;\n}\n";
}
for(int i=0;i<valueList.size();i++){
returnStr+="public String get"+(String)valueList.get(i)+"(){\n"+
"return this."+(String)valueList.get(i)+";\n}\n";
}
returnStr+="}";
return returnStr;
}

public static void BeanComplier(String beanName,String beanContent){
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
try{
File file=new File(beanName+".java");
String filename = file.getName();
System.out.println(filename);
PrintWriter out = new PrintWriter(new FileOutputStream(file));
out.println(beanContent);
out.flush();
out.close();
String[] test = new String[] {"-d", System.getProperty("user.dir"),filename };
javac.compile(test);
}
catch(Exception e){
e.printStackTrace();
}

}

public static void main(String[] s){
List list=new ArrayList();
list.add("name");
list.add("description");
BeanComplier("Test",BeanBuild("Test",list));
}
}

相关JAVA教程:
java代码的解释需要帮助!
jdk环境配置出错!在线等!谢谢!
新手请教
我想用Runtime.exec()来执行jar包里面的一个EXE文件怎么写啊
数据库连接池的一些问题
一个根本不懂的问题...(有实力的请进....)
右移位">>"操作符的问题
如何在swing中改变按钮大小
BufferedRead 的问题,大家来看看
如何判断从命令行输入的数值是不是某种基本类型?
请教一段for循环代码
一个java类里面全是static方法,如何声明这个类的接口?