2016-07-13 13 views
5

Mükemmel öğreniyorum ve sınıfım tüm alanlar için varsayılan değerler ile dinamik olarak başlatmaya çalışıyorum. newInstance çalıştırırken ben bütün özelliklerinin listesini alıp o nesnenin türünü alma ve türünde bir nesne oluşturmak am edilir uymaya çalışıyorum ama hata alıyorum nasıl Yani:<init>() Bu yöntemde oluklu kapanışta newInstance bu listeden çağırmak için bulunamadı

Aşağıda
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) 

olduğunu kod

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

Sen çalışıyoruz ile değer başlatmak olduğunu Yeni bir "java.lang.Boolean" nesnesi oluşturmak için , ancak sınıf java.lang.Boolean 'hiçbir argüman almayan bir kurucu yok. – Jesper

cevap

4

görüntüle java.lang.Boolean için java docs. Constructor Summary bölümünde görebileceğiniz gibi, bu sınıf için hiçbir argüman oluşturucu (ve istisna mesajının söylediği) yoktur. Sen gerekir ya:

  • boolean veya String argüman boole'ye yönelik
  • kullanım varsayılan değer ile (kurucu) çağırmak - false
  • Boolean.FALSE veya Boolean.TRUE
İlgili konular