这是我的代码
@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()发布于 2011-04-05 01:29:42
我不确定为什么groovy++不允许调用这个超方法,但是它引用的静态方法是用org.codehaus.groovy.runtime.DefaultGroovyMethods编写的
import org.codehaus.groovy.runtime.DefaultGroovyMethods
assert DefaultGroovyMethods.plus([one: 1], [two: 2]) == [one: 1, two: 2]你可以通过调用它来获得你想要的行为。
https://stackoverflow.com/questions/5541844
复制相似问题