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!"