当前位置: 代码迷 >> Java Web开发 >> java反射,能定义一个类吗?解决方法
  详细解决方案

java反射,能定义一个类吗?解决方法

热度:294   发布时间:2016-04-17 10:22:40.0
java反射,能定义一个类吗?
各位大仙,
问一个关于反射的问题,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);    }}
  相关解决方案