(使用Groovy 2.4.11
)
以下伪修改代码:
enum EnumClass { a, b }
class Some {
Foo foo
Some() {
EnumClass.with{ this.@foo = new Foo( a ) }
}
Some setFoo( String _foo ) { ... }
}
被调用为new Some()
,并显示以下运行时异常:
groovy.lang.MissingMethodException:没有方法签名:MyClass.setFoo()适用于参数类型:(Foo)值:[Foo $ 12345] ...`
看起来好像编译器认为会有一些 this.foo = ...
而不是this.@foo = ...
。 :-(
(这不应该发生,因为我理解它似乎是一些错误)
答案 0 :(得分:0)
解决方法:像这样写(在with
- 闭包之外)工作......
enum EnumClass { a, b }
class Some {
Foo foo
Some() {
//EnumClass.with{ this.@foo = new Foo( a ) } // throws exception
this.@foo = new Foo( EnumClass.a ) // works
}
Some setFoo( String _foo ) { ... }
}