java反射,能定义一个类吗?
各位大仙,
问一个关于反射的问题,java反射能定义一个类吗?我现用反射封装一个通用的方法,反射出来的是所有的字段。而我仅需要其中一部分的字段,想通过以数字的形式传字段进去,然后用反射定义另外一个类。不知道行不行?求解答。
例如:
private int id;
private String name;
private int age;
private String sex;
private String address;
private Date birthday;
我只想遍历的时候,只要
private String name;
private int age;
这两个字段,能不能用反射重新封装一个类,只包含这两个字段?
[解决办法]
楼主要重新封装一个类,就必须动态生成JAVA文件同时编译它,
下面应该能够解决你的问题
http://www.oschina.net/question/54100_38561
[解决办法]
不行的,要么你就动态生成java文件并且编译成class然后加载,再通过反射生成对象。
要么就把需要的字段提取出来生成一个父类
[解决办法]
LZ这么做的目的是什么,如果只需要使用某些字段,可以这些字段信息保存到一个Object的数组中
或者,直接用匿名类
for example
public class Test {
public static void main(String[] args) throws Throwable {
final String outname = "test";
final int outage = 123;
Object o = new Object() { //匿名内部类
String name;
int age;
{name = outname;
age = outage;
}
public void test() {
System.out.printf("%s,%d", name, age);
}
};
Class<?> c = o.getClass(); //但是这样只能用反射的方式来访问
Method m = c.getDeclaredMethod("test");
m.invoke(o);
}
}