日期:2014-05-17  浏览次数:20758 次

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);
    }
}