使用类名创建一个实例并调用构造函数
有没有一种方法可以在给定的类名(动态)下创建一个特定类的实例并向其构造函数传递参数。
比如说
Object object = createInstance("mypackage.MyClass","MyAttributeValue");
其中"MyAttributeValue"
是`MyClass'构造函数的一个参数。
298
10
有没有一种方法可以在给定的类名(动态)下创建一个特定类的实例并向其构造函数传递参数。
比如说
Object object = createInstance("mypackage.MyClass","MyAttributeValue");
其中"MyAttributeValue"
是`MyClass'构造函数的一个参数。
是的,类似的东西。
当然,这只对单个字符串参数有效,但你可以很容易地修改它。
注意,类名必须是完全限定的,即包括命名空间。对于嵌套类,你需要使用美元(因为这是编译器使用的)。比如说
要获得这个 "类 "对象,你需要
Class.forName("foo.Outer$Nested")
。你可以使用
Class.forName()
来获得一个所需类的Class
对象。然后使用
getConstructor()
找到所需的Constructor
对象。最后,在该对象上调用
newInstance()
来获得新的实例。你可以使用反射
如果类中只有一个空的构造函数(如Activity或Fragment等,android类)。
当使用(即)
getConstructor(String.lang)
时,构造函数必须被声明为公共的。 否则会产生一个NoSuchMethodException
。如果你想访问一个非公共的构造函数,你必须使用(即)
getDeclaredConstructor(String.lang)
。你要使用[java.lang.reflect.Constructor.newInstance(Object...)][1] 。
[1]: http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Constructor.html#newInstance%28java.lang.Object...%29
在Java中使用
Class<?>
用构造函数参数创建对象的简单方法:。案例1:- 这里,是这个 "Main "类中的一个小代码。
而且,这里是
Base
类的结构。情况2:-你,可以对有多个参数的构造函数和复制构造函数进行类似的编码。 例如,将3个参数作为参数传递给
Base
构造函数,就需要在类中创建构造函数,并将上面的代码改为:{{{9221085}}。而这里的Base类应该是这样的。
注意:- *不要忘记处理代码中需要处理的各种异常。
你也可以在创建的对象中调用方法。
您可以通过调用第一个约束器来创建对象即时,然后在创建的对象中调用第一个方法。
另一个有用的答案。 如何使用getConstructor(params).newInstance(args)?
在我的例子中,我的类'的构造函数将Webdriver作为参数,所以使用了以下代码。
如果有人正在寻找一种方法来创建一个类的实例,尽管该类遵循Singleton模式,这里有一种方法。
这只适用于使用私有构造函数实现单人模式的类。