2011-10-03 32 views
6

Tôi phải tạo một lớp động nhưng tôi muốn sử dụng tham số truyền vào lớp khởi tạo.Java Class động với tham số Constructor

Hiện nay mã của tôi trông giống như

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

Làm thế nào tôi có thể gọi các nhà xây dựng với tham số?

Trả lời

13

Bạn đã đóng, getDeclaredConstructor() trả về đối tượng Constructor bạn đang sử dụng. Ngoài ra, bạn cần chuyển đối tượng String đến phương thức newInstance() của số đó 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); 
Các vấn đề liên quan