Groovy 在另一个内部调用方法时出现MissingMethodException

Groovy 在另一个内部调用方法时出现MissingMethodException,groovy,Groovy,我试图在另一个方法中调用一个方法,但得到一个MissingMethodException。我的代码如下所示: class Foo { static def bar { //do stuff return something } static def baz { myVar=false -> def something = bar() //do stuff w/something } } Foo.baz() 这就是我得到的错误:catch:

我试图在另一个方法中调用一个方法,但得到一个
MissingMethodException
。我的代码如下所示:

class Foo {
  static def bar {
    //do stuff
    return something
  }
  static def baz { myVar=false ->
    def something = bar()
    //do stuff w/something
  } 
}
Foo.baz()
这就是我得到的错误:
catch:groovy.lang.MissingMethodException:没有方法的签名:Foo$\uu clinit\uu closure6.bar()适用于参数类型:()值:[]

我发现,如果我这样定义
baz
,我可以修复这个错误:

static def baz { myVar=false ->
  def something = this.bar()
  //do stuff w/something
}
但如果我这样做,我的IDE会告诉我这是一个
不必要的限定引用


这是怎么回事

代码段中的语法是错误的。您需要
static def bar={}
static def bar(){}

如果希望
bar
成为一种方法,则没有错误:

class Foo {
  static bar() { 'something' }

  static baz = { myVar=false ->
    def something = bar()
    return something + "!"
  } 
}

assert Foo.baz() == "something!"
如果希望
bar
成为闭包(即
bar={}
),则要从
baz
调用
bar
,需要将类名放在第一位:

class Foo {
  static bar = { 'something' }

  static baz = { myVar=false ->
    def something = Foo.bar()
    return something + "!"
  } 
}

assert Foo.baz() == "something!"