作为前言,我是Groovy / Java / JVM语言的新手。
我尝试使用as
运算符编写可以轻松反序列化为其他基本类型(本例中为Integer)的枚举。 Groovy文档说这是通过在类上定义asType
方法(我假设枚举计数在名词王国中)来完成的,但我得到GroovyCastExceptions并且我的IDE调试器不会停止在asType
方法中的断点。这是我的示例代码(以http://arturoherrero.com/create-your-own-groovy-type-conversion/为模型):
enum Foo {
BLAH(1),
BLARG(2),
SNEH(3)
Integer flag
Foo(Integer flag) {
this.flag = flag
}
Object asType(Class clazz) {
if (clazz == Integer) {
flag
}
else {
super.asType(clazz)
}
}
}
Foo.BLAH as Integer
Foo.BLAH.asType(Integer)
// Both throw: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'BLAH' with class 'Foo' to class 'java.lang.Integer'