Java 必知必会 第 43 篇

how to get an enum value from a string value in java

java怎样得到指定名称的枚举类型对应的的字符串类型的枚举常量

问题:

假如说我有一个如下的枚举类

    public enum Blah {
    A, B, C, D
    }

而我想要找出具有指定名称的枚举类型对应的的字符串类型的枚举常量,打个比方"A"对应的值为Blah.A
此时我应该怎么做?
我是不是应该使用Enum.valueOf()这个方法?如果是的话,我又该怎么使用它?

回答:

是的,Blah.valueOf("A")将会给你你想要的Blah.A
不过需要注意的是,你输入的名字必须是绝对匹配的,像Blah.valueOf("a")Blah.valueOf("A ")都会抛出IllegalArgumentException
注:第一个表达式aA不匹配
第二个表达式A后面多了一个空格

静态方法valueOf()values()在编译时创建并且不会出现在编译后的源码里。但尽管如此,这两个方法还是确实出现在了Java文档里,文档连接