Ich lerne groovy und ich versuche, meine Klasse dynamisch mit Standardwerten für alle Felder zu initialisieren. So, wie ich fortfahren wird, nehme ich die Liste aller Eigenschaften und bekommen die Art des Objekts, und erstellen Sie ein Objekt des Typs, aber ich bin immer Fehler, wenn newInstance
Ausführung:Konnte nicht finden, welche Methode <init>() aus dieser Liste auf newInstance in groovy Schließung aufrufen
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)
Unten ist die
Codepublic 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"
}
Sie initialisieren versuchen um ein neues 'java.lang.Boolean'-Objekt zu erstellen, aber die Klasse' java.lang.Boolean' hat keinen Konstruktor, der keine Argumente annimmt. – Jesper