ITEEDU

用反射创建新的对象

如果创建对象不要参数,可以用Class对象的newInstance()来实现。

如果要参数的话,就要根据参数类型找到构造函数,再用构造函数来创建了。

import java.lang.reflect.*;
public class constructor2 {
    public constructor2() {}
    public constructor2(int a, int b) {
        System.out.println("a = " + a + " b = " + b);
    }
    public static void main(String args[]) {
        try {
            Class cls = Class.forName("constructor2");
            Class partypes[] = new Class[2];
            partypes[0] = Integer.TYPE;
            partypes[1] = Integer.TYPE;
            Constructor ct = cls.getConstructor(partypes);
            Object arglist[] = new Object[2];
            arglist[0] = new Integer(37);
            arglist[1] = new Integer(47);
            Object retobj = ct.newInstance(arglist);
        } catch (Throwable e) {System.err.println(e);}
    }
}