2011-10-03 11 views
6

Devo creare una classe dinamicamente, ma voglio usare il parametro di passaggio del costruttore della classe.Classe Java in modo dinamico con il parametro Costruttore

Attualmente il mio codice è simile

Class<HsaInterface> _tempClass = (Class<HsaInterface>) Class.forName(hsaClass); 
     _tempClass.getDeclaredConstructor(String.class); 
     HsaInterface hsaAdapter = _tempClass.newInstance(); 
     hsaAdapter.executeRequestTxn(txnData); 

Come posso chiamare il costruttore con il parametro?

risposta

13

Hai vicino, getDeclaredConstructor() restituisce un oggetto Constructor si suppone di utilizzare. Inoltre, è necessario passare un oggetto String al metodo di quello Constructor.

Class<HsaInterface> _tempClass = (Class<HsaInterface>) Class.forName(hsaClass); 
Constructor<HsaInterface> ctor = _tempClass.getDeclaredConstructor(String.class); 
HsaInterface hsaAdapter = ctor.newInstance(aString); 
hsaAdapter.executeRequestTxn(txnData); 
1
Constructor constructor = _tempClass.getDeclaredConstructor(String.class); 
Object obj = constructor.newInstance("some string"); 
6
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); 
Problemi correlati