Grails 字符串枚举?

标签 grails groovy

假设我有这个枚举:

public enum MyEnum {
    AUSTRALIA_SYDNEY ("Australia/Sydney"),
    AUSTRALIA_ADELAIDE ("Australia/Adelaide"),

    private String name

    private Timezone(String name){
        this.name = name
    }

    public String value() {
        name
    }

    String toString() {
        name
    }
}

有没有办法让我使用它的值/名称来获取枚举?
现在,我正在尝试这样做,但它不起作用:
MyEnum.valueOf("Australia/Sydney")

我从数据库得到的是一个字符串(在这种情况下:“澳大利亚/悉尼”),而不是值,不幸的是,我不能改变它返回的类型,因为它是一个旧的
系统,我只是连接到这个由多个应用程序共享的数据库。无论如何围绕这个?

最佳答案

将以下内容添加到您的枚举中:

static MyEnum valueOfName( String name ) {
    values().find { it.name == name }
}

然后,您可以调用:
MyEnum.valueOfName( "Australia/Adelaide" )

关于Grails 字符串枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18823595/

相关文章:

java - gradle中的验证任务

java - 在java jre上使用单个jar文件运行groovy未编译的脚本

GroovyClassLoader 和导入

grails - 如何在 g :if test ="..." without providing it (or object instance) to the model? 中调用自定义函数

spring-boot - Grails 2.4作为Spring Cloud微服务的应用

Grails - 在计划作业中使用 cron 表达式的属性值

grails - 域类变量

jenkins - 并行任务日志困惑

javascript - 如何确定用户何时离开网页(不包括某些链接)

forms - 根据名称自动填充表单输入?