使用类名创建一个实例并调用构造函数

问题:

有没有办法为类名(动态)创建一个特定类的实例,并将参数传递给它的构造函数。
就像是:

Object object = createInstance("mypackage.MyClass","MyAttributeValue");

其中"MyAttributeValue"MyClass的构造函数的参数

回答:

是的,像:

Class<?> clazz = Class.forName(className);
Constructor<?> ctor = clazz.getConstructor(String.class);
Object object = ctor.newInstance(new Object[] { ctorArgument });

这当然只适用于单个字符串参数,但是您可以很容易地修改它。
请注意,类名必须是完全限定的名称,即包括命名空间。对于嵌套类,您需要使用一个美元(因为这是编译器使用的)。例如:

package foo;

public class Outer
{
    public static class Nested {}
}

要获得Class对象,您需要Class.forName("foo.Outer$Nested")

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Creating an instance using the class name and calling constructor

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

29 − 24 =