2016-07-13 12 views
5

में newInstance पर इस सूची से आह्वान करने के लिए मैं ग्रूवी सीख रहा हूँ और मैं सभी क्षेत्रों के लिए डिफ़ॉल्ट मान के साथ गतिशील मेरी कक्षा प्रारंभ करने में कोशिश कर रहा हूँ लगता है नहीं कर सका।जो विधि <init>() ग्रूवी बंद

Exception in thread "main" org.codehaus.groovy.runtime.metaclass.MethodSelectionException: Could not find which method <init>() to invoke from this list: 
    public java.lang.Boolean#<init>(boolean) 
    public java.lang.Boolean#<init>(java.lang.String) 
    at groovy.lang.MetaClassImpl.chooseMethodInternal(MetaClassImpl.java:3160) 
    at groovy.lang.MetaClassImpl.chooseMethod(MetaClassImpl.java:3097) 
    at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1707) 
    at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1526) 

नीचे है: तो मैं कैसे आगे बढ़ने से कर रहा हूँ, मैं सभी गुण की सूची ले रहे हैं और उस वस्तु के प्रकार हो रही है और प्रकार का ऑब्जेक्ट बनाने रहा हूँ, लेकिन मैं त्रुटि हो रही है जब newInstance क्रियान्वित कोड

public static void init() { 
     Position position1 = new Position(); 

     JXPathContext context = JXPathContext.newContext(position1) 
     context.createPathAndSetValue('id', '2') 

     position1.properties.each { Map.Entry entry -> 
      String propertyName = entry.key; 
      if (!propertyName.equalsIgnoreCase('class')) { 
       Class clazz = position1.class.getDeclaredField(propertyName)?.type 
       println "$clazz" 
       Object ob = clazz.newInstance() 
      } 

     } 
     Identifier sourceSystemPositionId = new Identifier() 

     context.setValue('sourceSystemPositionId/content', 'default-content') 
     context.setValue('sourceSystemPositionId/domain', 'default-domain') 

     println "$position1" 
    } 
+0

आप कोशिश कर रहे हैं के साथ मूल्य को प्रारंभ एक नया 'java.lang.Boolean' वस्तु बनाने के लिए है, लेकिन वर्ग' java.lang.Boolean' एक निर्माता है कि कोई तर्क लेता नहीं है। – Jesper

उत्तर

4

देखें java.lang.Boolean के लिए java docs। आप अनुभाग Constructor Summary में देख सकते हैं कि वहाँ कोई नहीं-आर्ग निर्माता है (और यह है कि क्या अपवाद संदेश का कहना है) इस वर्ग के लिए। आप या तो:

  • यह (निर्माता) आह्वान के साथ boolean या String तर्क बूलियन के लिए
  • उपयोग डिफ़ॉल्ट मान - जो है false
  • Boolean.FALSE या Boolean.TRUE
संबंधित मुद्दे