gpt4 book ai didi

class - 在 groovy 脚本中包含类

转载 作者:行者123 更新时间:2023-12-02 22:06:33 26 4
gpt4 key购买 nike

如何在 Groovy 脚本中包含几个类?

(这个问题和REST无关,但是我用REST来把问题放在正确的上下文中)

背景:我正在 groovy 中开发一个 CLI,以从我们正在运行的服务中获取状态信息。状态信息作为 REST 接口(interface)公开。

根据我在 CLI 上给出的参数,在 REST 接口(interface)上调用不同的路径。我还将实际的 REST 通信放在类层次结构中,以便能够重用代码,这就是我遇到问题的地方。如何以一种简单的方式在我的常规脚本中包含类层次结构?

Groovy CLI 脚本 RestCli.groovy

import restcli.RestA
import restcli.RestB

if(args[0] == "A") {
new RestA().restCall()
}
else if(args[0] == "B") {
new RestB().restCall()
}

层次结构的父类(super class) restcli/RestSuper.groovy

package restcli

abstract class RestSuper {

protected def restCall(String path) {
println 'Calling: ' +path
}

abstract def restCall()

}

两个类实现不同的调用。 restcli/RestA.groovy

package restcli

class RestA extends RestSuper {

def restCall() {
restCall("/rest/AA")
}

}

restcli/RestB.groovy

package restcli

class RestB extends RestSuper {

def restCall() {
restCall("/rest/BB")
}

}

我想要得到的结果很简单:

> groovy RestCli.groovy B
Calling: /rest/BB

关于如何做到这一点有什么想法吗?

我实际上想避免创建一个 jar 文件然后使用 -classpath 选项,因为我还使用 @Grab 来获取 http-builder 并且如果我使用 -classpath 然后我遇到了这样的问题:java.lang.NoClassDefFoundError: groovyx.net.http.HTTPBuilder

最佳答案

您可以将多个类放在一个 groovy 脚本中(不确定包如何/是否以这种方式工作)或者只是将包结构创建为与主脚本相同的文件夹中的目录结构。

在您的示例中可能如下所示:

/
+ RestCli.groovy
+ restcli/
+--+ RestSuper.groovy
+--+ RestA.groovy
+--+ RestB.groovy

然后你可以这样调用你的脚本:

> groovy RestCli.groovy B

关于class - 在 groovy 脚本中包含类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16036698/

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