Groovy—在接口中定义的方法可以有默认值吗?
如果在Eclipse/STS(使用groovy)中输入以下内容: 唯一抱怨的行是试图使用默认值的行。我无法从codehaus网站上判断这是否得到支持 IDE错误为:Groovy—在接口中定义的方法可以有默认值吗?,groovy,interface,Groovy,Interface,如果在Eclipse/STS(使用groovy)中输入以下内容: 唯一抱怨的行是试图使用默认值的行。我无法从codehaus网站上判断这是否得到支持 IDE错误为: Groovy:Cannot specify default value for method parameter 所以这让我觉得它不被支持。由于将有多个实现,我想在这里使用一个接口。我并不真正需要接口中的默认值,但是如果实现类尝试将此参数设置为默认值,则尝试实现接口约定时会出现错误。有什么办法吗?不,你不能 定义默认值时,Gro
Groovy:Cannot specify default value for method parameter
所以这让我觉得它不被支持。由于将有多个实现,我想在这里使用一个接口。我并不真正需要接口中的默认值,但是如果实现类尝试将此参数设置为默认值,则尝试实现接口约定时会出现错误。有什么办法吗?不,你不能
定义默认值时,Groovy实际上会在类中创建多个方法,例如:
class Test {
void something( a=false ) {
println a
}
}
实际创造
public void something(java.lang.Object a) {
this.println(a)
}
及
这不能在接口中完成
你可以做:
interface iFaceWithAnIssue {
def thisHasProblems()
def thisHasProblems(alpha)
}
然后
谢谢蒂姆,这也说明了我需要做什么!我只需将带有默认值的方法添加到类中,并让它调用接口方法的实现-duh…@JoeG当然,这必须通过Java8的默认接口实现来重新讨论
public void something() {
this.something(((false) as java.lang.Object))
}
interface iFaceWithAnIssue {
def thisHasProblems()
def thisHasProblems(alpha)
}
class Test implements iFaceWithAnIssue {
// This covers both Inteface methods
def thisHasProblems(alpha='va') {
// do something
}
}