使用存储在字符串中的值作为枚举对象?

时间:2015-09-04 09:03:50

标签: java grails groovy

我有一个枚举。一个字符串包含枚举的名称。我想使用字符串访问枚举。像这样的东西。但这不起作用:(

public enum Level {     HIGH,     MEDIUM,     LOW }
def x = "Level"
println "$x".values();

2 个答案:

答案 0 :(得分:1)

您可以使用Class.forName方法执行此操作。例如

    public enum Level {     
        HIGH,     
        MEDIUM,     
        LOW 
    }

    def clazz = Class.forName("Level")
    println clazz.values()

请记住,您应该使用FULLY QUALIFIED CLASSNAME。有关详细信息http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#forName(java.lang.String)

答案 1 :(得分:0)

你必须这样做:

public enum Level {     HIGH,     MEDIUM,     LOW }
def x = this.class.classLoader.loadClass('Level', true)
println x.values()

这是另一种方式:

public enum Level {     HIGH,     MEDIUM,     LOW }
def x = "Level"
println Eval.me("${x}").values()