我试图在另一个内部调用一个方法,我得到一个MissingMethodException
。我的代码看起来像这样:
class Foo {
static def bar {
//do stuff
return something
}
static def baz { myVar=false ->
def something = bar()
//do stuff w/something
}
}
Foo.baz()
这是我得到的错误:Caught: groovy.lang.MissingMethodException: No signature of method: Foo$__clinit__closure6.bar() is applicable for argument types: () values: []
如果我这样定义baz
,我发现我可以修复此错误:
static def baz { myVar=false ->
def something = this.bar()
//do stuff w/something
}
但如果我这样做,我的IDE会告诉我这是Unnecessary qualified reference
。
这里发生了什么?
答案 0 :(得分:1)
您的代码段中的语法错误。您想要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 = {}
),那么要从bar
调用baz
,您需要先输入类名:
class Foo {
static bar = { 'something' }
static baz = { myVar=false ->
def something = Foo.bar()
return something + "!"
}
}
assert Foo.baz() == "something!"