检查是否直接执行Groovy脚本

检查是否直接执行Groovy脚本,groovy,Groovy,在Python中,可以通过检查\uuuu name\uuuu=='\uuuu init\uuuu'来进行检查 Groovy中是否有与此等效的功能?我想最简单的方法是将当前类名(使用class.simpleName)与实际执行的文件脚本名进行比较 以下是一个例子: 让我们在M.groovy文件中创建第一个类: class M { static main(args){ def m = new M() } def M(){ def thisCla

在Python中,可以通过检查
\uuuu name\uuuu=='\uuuu init\uuuu'
来进行检查


Groovy中是否有与此等效的功能?

我想最简单的方法是将当前类名(使用
class.simpleName
)与实际执行的文件脚本名进行比较 以下是一个例子:

让我们在
M.groovy
文件中创建第一个类:

class M {
    static main(args){
        def m = new M()
    }
    def M(){
        def thisClass = this.getClass().simpleName
        def callingClass = new File(getClass().protectionDomain.codeSource.location.path).name.with{ it.take(it.lastIndexOf('.')) }
        println("thisClass: ${thisClass}, callingClass: ${callingClass}")
        if (thisClass == callingClass){
            println 'Calling from M class...'
        } else {
            println 'Calling from outside.'
        }
    }
}
现在,从外部类,例如
T.groovy
可以调用实例化
M
类:
newm()
。 当您执行
M.groovy
时,您得到:

thisClass: M, callingClass: M
Calling from M class...
当您运行
groovy T.groovy
时,您将得到:

thisClass: M, callingClass: T
Calling from outside.
希望这有帮助