在Grails上的src / java文件中动态更改枚举值

时间:2012-08-07 13:12:33

标签: grails

我在Grails项目中的src / java上有一个枚举文件。

此枚举在代码中定义了值,我可以动态更改此值吗?

public enum Status
{
    value_one, value_two, value_three;

    public String getOtherString()
    {
        switch (this)
        {
        case value_one:
            return "value one";
        case value_two:
            return "value two";
        case value_three:
            return "value three";
        default:
            return "problem";
        }
    }

    @Override
    public String toString()
    {
        switch (this)
        {
        case value_one:
            return "VALUE 1";
        case value_two:
            return "VALUE 2";
        case value_three:
            return "VALUE 3";
        default:
            return "problem happens";
        }
    }
}

2 个答案:

答案 0 :(得分:2)

在使用之前,您可以使用metaClass进行扩展。例如,添加到BootStrap.init()

Status.metaClass.getValueOne = {
   Status val = delegate
   switch (val) {
        case Status.value_one:
        // read from database
   }
}

答案 1 :(得分:0)

我找到了使用服务的方法。

我在.groovy文件中转换枚举并使用服务方法返回值。

一切正常!