加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:28:42 所属栏目:大数据 来源:网络整理
导读:如果在 Eclipse / STS中输入以下内容(使用groovy): interface iFaceWithAnIssue { def thisIsFine(a,b,c) def thisHasProblems(alpha='va')} 抱怨的唯一一行是尝试使用默认值的那一行.如果支持与否,我无法从codehaus网站告诉我. IDE错误是: Groovy:Cannot
如果在 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
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读