gpt4 book ai didi

java - groovy 脚本可以继承自 Java 或 Groovy 父类(super class)吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:53 25 4
gpt4 key购买 nike

这是脚本(Scccc.groovy):

import scriptParents.ScriptGroovyParent

println(queryThisBaby("my query"));

这是父类(super class):

class ScriptGroovyParent {

public ScriptGroovyParent() {
// TODO Auto-generated constructor stub
}

// public String queryThisBaby(String query){
//
// return query +" was run.";
// }

def queryThisBaby(name) {
return name +" was run."
}
}

我在尝试运行脚本时遇到错误。

Caught: groovy.lang.MissingMethodException: No signature of method: scripts.Scccc.queryThisBaby() is applicable for argument types: (java.lang.String) values: [my query]
groovy.lang.MissingMethodException: No signature of method: scripts.Scccc.queryThisBaby() is applicable for argument types: (java.lang.String) values: [my query]
at scripts.Scccc.run(Scccc.groovy:5)

这怎么可能?

最佳答案

脚本可以使用 CompilerConfiguration 扩展基类.这里的警告是基类必须扩展 Script因为 groovy 脚本通常会扩展 Script 并且您不能在“IS A”关系中拥有多重继承。

//ScriptGroovyParent.groovy
abstract class ScriptGroovyParent extends Script{
def queryThisBaby(name) {
return name +" was run."
}
}


//Script Scccc.groovy
import org.codehaus.groovy.control.CompilerConfiguration

def configuration = new CompilerConfiguration()
configuration.setScriptBaseClass("ScriptGroovyParent")

def shell = new GroovyShell(this.class.classLoader, new Binding(), configuration)

assert shell.evaluate("queryThisBaby('My Query')") == 'My Query was run.'

如果它们位于不同的包中,您可以导入包。

关于java - groovy 脚本可以继承自 Java 或 Groovy 父类(super class)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309640/

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