【问题标题】:Java Class Dynamically with Constructor parameter带有构造函数参数的Java类动态
【发布时间】:2011-11-29 22:08:24
【问题描述】:
我必须动态创建一个类,但我想使用类构造函数传递参数。
目前我的代码看起来像
Class<HsaInterface> _tempClass = (Class<HsaInterface>) Class.forName(hsaClass);
_tempClass.getDeclaredConstructor(String.class);
HsaInterface hsaAdapter = _tempClass.newInstance();
hsaAdapter.executeRequestTxn(txnData);
如何使用参数调用构造函数?
【问题讨论】:
标签:
java
class
dynamic
instantiation
【解决方案1】:
你已经接近了,getDeclaredConstructor() 返回一个你应该使用的 Constructor 对象。此外,您需要将String 对象传递给Constructor 的newInstance() 方法。
Class<HsaInterface> _tempClass = (Class<HsaInterface>) Class.forName(hsaClass);
Constructor<HsaInterface> ctor = _tempClass.getDeclaredConstructor(String.class);
HsaInterface hsaAdapter = ctor.newInstance(aString);
hsaAdapter.executeRequestTxn(txnData);
【解决方案2】:
Class<HsaInterface> _tempClass = (Class<HsaInterface>) Class.forName(hsaClass);
// Gets the constructor instance and turns on the accessible flag
Constructor ctor = _tempClass.getDeclaredConstructor(String.class);
ctor.setAccessible(true);
// Appends constructor parameters
HsaInterface hsaAdapter = ctor.newInstance("parameter");
hsaAdapter.executeRequestTxn(txnData);
【解决方案3】:
Constructor constructor = _tempClass.getDeclaredConstructor(String.class);
Object obj = constructor.newInstance("some string");