0

这是我的代码

@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打字的方式打电话。我该如何解决这种情况?

我想要这种方法的原因是我希望这段代码能够编译。

FooMap map = new FooMap() + [bar: 42]
map.doSomeFoo()
4

1 回答 1

1

我不确定为什么 groovy++ 不允许调用 super 方法,但它引用的静态方法在org.codehaus.groovy.runtime.DefaultGroovyMethods

import org.codehaus.groovy.runtime.DefaultGroovyMethods

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

你可以通过调用它来获得你正在寻找的行为。

于 2011-04-04T17:29:41.670 回答