首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写groovy++中的重载运算符时调用super

重写groovy++中的重载运算符时调用super
EN

Stack Overflow用户
提问于 2011-04-05 01:04:23
回答 1查看 182关注 0票数 0

这是我的代码

代码语言:javascript
复制
@Typed class FooMap extends LinkedHashMap {
  def doSomeFoo() {
    // ...
  }

  FooMap plus(Collection coll) {
    super.plus(coll)
  }
}

虽然它可以在普通的Groovy中工作,但是使用Groovy++编译它会产生一个错误:Cannot reference default groovy method 'plus' using 'super'. Call the static method instead。我不知道这是不是Groovy++中的错误,或者它是以这种方式工作的。无论如何,我想以一种类型化的方式调用super。我该如何解决这种情况?

我之所以想要这样一个方法,是因为我想编译这段代码。

代码语言:javascript
复制
FooMap map = new FooMap() + [bar: 42]
map.doSomeFoo()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-05 01:29:42

我不确定为什么groovy++不允许调用这个超方法,但是它引用的静态方法是用org.codehaus.groovy.runtime.DefaultGroovyMethods编写的

代码语言:javascript
复制
import org.codehaus.groovy.runtime.DefaultGroovyMethods

assert DefaultGroovyMethods.plus([one: 1], [two: 2]) == [one: 1, two: 2]

你可以通过调用它来获得你想要的行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5541844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档