asType似乎不适用于Groovy

时间:2015-10-13 19:12:12

标签: groovy enums

作为前言,我是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'

0 个答案:

没有答案