auf Ihre Antwort Basierend @daggett ich eine Methode gefunden, die fehlende Griffe Eigenschaften:
public abstract class MyBaseScript extends Script implements GroovyObject {
protected class A {
public Object xor(String var) {
//do fancy stuff
return var;
}
}
protected A foo = new A();
//method which handles missing properties
public Object propertyMissing(String name) {
return name;
}
}
Wie kann ich meine Skripte starten:
Binding binding = new Binding();
// passing parameters
binding.setVariable("arg0", arg0);
binding.setVariable("args", arg1);
// Compiler Config
CompilerConfiguration cc = new CompilerConfiguration();
ImportCustomizer ic = new ImportCustomizer();
// add some imports for e.g.
ic.addImports("java.awt.Color", "java.util.Calendar",...);
cc.addCompilationCustomizers(ic);
// set BaseClass
cc.setScriptBaseClass("de.MyBaseScript");
// execute script
GroovyClassLoader loader = new GroovyClassLoader();
shell = new GroovyShell(loader, binding, cc);
Script gscript = shell.parse(groovyScriptAsAFile);
Object o = gscript.run();
Können Sie einige weitere Informationen zur Verfügung stellen? Ich bin mir nicht sicher, was du mit 'Was ich will ist ein Weg, um auf diese Methode wie myobject^foo, wo foo behandelt wie eine normale String. ' – tylerwal
Ich habe eine Basisklasse in Java für meine groovigen Skripte geschrieben. Dort habe ich ein Objekt definiert, das Zugriff auf eine Graphdatenbank bietet. Ich möchte auf diese Knoten namentlich zugreifen, zum Beispiel 'db^nodename' oder' db^nodename^nodename2 ... '. Die Methode, die ich bereits habe, ist 'public Object xor (String var)' was funktioniert, aber leider muss ich 'db ^" nodename "' schreiben. –