【问题标题】: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");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-11-22
          • 2011-05-07
          • 2021-07-05
          • 1970-01-01
          • 2019-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多