2011-10-03 17 views
6

मुझे गतिशील रूप से कक्षा बनाना है, लेकिन मैं कक्षा कन्स्ट्रक्टर पासिंग पैरामीटर का उपयोग करना चाहता हूं।जावा क्लास गतिशील रूप से कन्स्ट्रक्टर पैरामीटर

वर्तमान में मेरे कोड लगता है कि

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

मैं कैसे पैरामीटर के साथ निर्माता कॉल कर सकते हैं?

उत्तर

13

आप पास हो गया, getDeclaredConstructor() एक Constructor वस्तु आपके द्वारा उपयोग किए जाने का अनुमान कर रहे हैं देता है। साथ ही, आपको String ऑब्जेक्ट को विधि 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); 
संबंधित मुद्दे