gpt4 book ai didi

java - 是否可以在 Groovy 中使用不是脚本的委托(delegate)

转载 作者:行者123 更新时间:2023-12-01 16:49:58 26 4
gpt4 key购买 nike

我知道可以在 Groovy 中使用脚本作为委托(delegate),如下所示(这是 groovy API 中 DelegatingScript javadoc 的示例):

CompilerConfiguration cc = new CompilerConfiguration();
cc.setScriptBaseClass(DelegatingScript.class.getName());
GroovyShell sh = new GroovyShell(cl,new Binding(),cc);
DelegatingScript script = (DelegatingScript)sh.parse(new File("my.dsl"))
script.setDelegate(new MyDSL());
script.run();

我想要做的是使用扩展DelegatingScript的Java类来委托(delegate)方法调用,而不是使用另一个脚本。可能吗?

目前我的代码如下,不使用委托(delegate):

CompilerConfiguration config = new CompilerConfiguration();
GroovyClassLoader groovyLoader = new GroovyClassLoader(getClassLoader(), config);
Class<?> groovyClass = groovyLoader.parseClass(scriptContent);
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
// call methods in GroovyObject

最佳答案

您可以使用 MyDSL 类作为基本脚本类

abstract class MyDSL extends Script{
...
}

CompilerConfiguration cc = new CompilerConfiguration();
cc.setScriptBaseClass(MyDSL.class.getName());
GroovyShell sh = new GroovyShell(cl,new Binding(),cc);
MyDSL script = (MyDSL)sh.parse(new File("my.dsl"))
script.run();

关于java - 是否可以在 Groovy 中使用不是脚本的委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61709788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com