各位大仙,
问一个关于反射的问题,java反射能定义一个类吗?我现用反射封装一个通用的方法,反射出来的是所有的字段。而我仅需要其中一部分的字段,想通过以数字的形式传字段进去,然后用反射定义另外一个类。不知道行不行?求解答。
例如:
- Java code
private int id; private String name; private int age; private String sex; private String address; private Date birthday;
我只想遍历的时候,只要
- Java code
private String name; private int age;
这两个字段,能不能用反射重新封装一个类,只包含这两个字段?
------解决方案--------------------
楼主要重新封装一个类,就必须动态生成JAVA文件同时编译它,
下面应该能够解决你的问题
http://www.oschina.net/question/54100_38561
------解决方案--------------------
不行的,要么你就动态生成java文件并且编译成class然后加载,再通过反射生成对象。
要么就把需要的字段提取出来生成一个父类
------解决方案--------------------
LZ这么做的目的是什么,如果只需要使用某些字段,可以这些字段信息保存到一个Object的数组中
或者,直接用匿名类
for example
- Java code
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); }}