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

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

是否有一种方法来创建给定类名(动态)的特定类的实例,并将参数传递给它的构造函数。

类似于:

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

哪里"MyAttributeValue"的构造函数的参数。MyClass.


慕森卡
浏览 705回答 3
3回答

拉风的咖菲猫

是的,有点像:Class<?>&nbsp;clazz&nbsp;=&nbsp;Class.forName(className);Constructor<?>&nbsp;ctor&nbsp;=&nbsp;clazz.getConstructor(String.class);Object&nbsp;object&nbsp;=&nbsp;ctor.newInstance(new&nbsp;Object[]&nbsp;{&nbsp;ctorArgument&nbsp;});当然,这只适用于单个字符串参数,但是您可以很容易地修改它。请注意,类名必须是完全限定的名称,即包含名称空间。对于嵌套类,您需要使用美元(因为这是编译器使用的)。例如:package&nbsp;foo;public&nbsp;class&nbsp;Outer{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;class&nbsp;Nested&nbsp;{}}若要获得Class对象,您需要Class.forName("foo.Outer$Nested").

蝴蝶不菲

你可以用Class.forName()得到一个Class对象。然后使用getConstructor()找到想要的Constructor对象。最后,打电话newInstance()在这个对象上得到你的新实例。Class<?>&nbsp;c&nbsp;=&nbsp;Class.forName("mypackage.MyClass");Constructor<?>&nbsp;cons&nbsp;=&nbsp;c.getConstructor(String.class);Object&nbsp;object&nbsp;=&nbsp;cons.newInstance("MyAttributeValue");

隔江千里

你可以用反射return&nbsp;Class.forName(className).getConstructor(String.class).newInstance(arg);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java