Groovy—在接口中定义的方法可以有默认值吗?

Groovy—在接口中定义的方法可以有默认值吗?,groovy,interface,Groovy,Interface,如果在Eclipse/STS(使用groovy)中输入以下内容: 唯一抱怨的行是试图使用默认值的行。我无法从codehaus网站上判断这是否得到支持 IDE错误为: Groovy:Cannot specify default value for method parameter 所以这让我觉得它不被支持。由于将有多个实现,我想在这里使用一个接口。我并不真正需要接口中的默认值,但是如果实现类尝试将此参数设置为默认值,则尝试实现接口约定时会出现错误。有什么办法吗?不,你不能 定义默认值时,Gro

如果在Eclipse/STS(使用groovy)中输入以下内容:

唯一抱怨的行是试图使用默认值的行。我无法从codehaus网站上判断这是否得到支持

IDE错误为:

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
    }
}