微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

interface iFaceWithAnIssue {
    def thisIsFine(a,b,c)
    def thisHasProblems(alpha='va')
}

抱怨的唯一一行是尝试使用认值的那一行.如果支持与否,我无法从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)
}

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐