1
- Java 中如何将 String 转换为 enum
2
- =======
1
+ # Java 中如何将 String 转换为 enum
3
2
4
- ###问题
5
-
6
- ###我有一个 enum 类
7
-
8
- ``` java
3
+ ### 问题
4
+ enum 类
5
+ ``` java
9
6
public enum Blah {
10
7
A , B , C , D
11
8
}
12
9
```
13
- 我想要找到一个 ` String ` 对应的 enum 值。例如, ` "A" ` 将是 ` Blah.A ` .如何做到?
14
-
15
- 我需要使用 ` Enum.valueOf() ` 方法吗? 如果是该如何使用?
10
+ 如何根据枚举类型的值(比如 "A" ) 得到 ` Blah.A ` ?
16
11
17
12
---
18
13
19
14
### A1
20
15
21
16
是的, ` Blah.valueOf("A") ` 将会给你 ` Blah.A ` .
22
17
23
- 静态方法 ` valueof() ` 和 ` values() ` 在编译时期被插入,并不存在于源码中。但是在Javadoc中;例如,[ ` Dialog.ModalityType ` ] ( http://docs.oracle.com/javase/7/docs/api/java/awt/Dialog.ModalityType.html " Dialog.ModalityType ") 中显示了这两个方法。
18
+ 静态方法 ` valueof() ` 和 ` values() ` 在编译时期被插入,并不存在于源码中。
19
+ 但是在Javadoc中会显示;例如,[ ` Dialog.ModalityType ` ] ( http://docs.oracle.com/javase/7/docs/api/java/awt/Dialog.ModalityType.html " Dialog.ModalityType ") 中显示了这两个方法。
24
20
25
21
26
22
### A2
@@ -80,7 +76,7 @@ public static <T extends Enum<T>> T getEnumFromString(Class<T> c, String string)
80
76
return null ;
81
77
}
82
78
```
83
- 之后,在我的enum类中通常如此使用来减少打字 :
79
+ 之后,在我的enum类中通常如此使用来减少代码量 :
84
80
``` java
85
81
public static MyEnum fromString(String name) {
86
82
return getEnumFromString(MyEnum . class, name);
@@ -91,17 +87,20 @@ public static MyEnum fromString(String name) {
91
87
92
88
_ 评论区对于答主的异常处理一片指责 -译者注_
93
89
94
- ###A4
95
- 如果你不想编写自己的工具类,可以使用 Google的 ` guava ` 库:
90
+ ### A4
91
+ 如果你不想编写自己的工具类,可以使用 Google的 [ Google guava] ( https://github.com/google/guava ) 库:
96
92
``` java
97
93
Enums . getIfPresent(Blah . class, " A" )
98
94
```
99
95
它让你检查是否 ` Blan ` 中存在 ` A ` 并且不抛出异常
100
96
101
97
_ 完整方法签名 ` Optional<T> getIfPresent(Class<T> enumClass, String value) ` , ` Optional ` 对象可以优雅的解决null值问题 -译者注_
102
98
99
+ > 注意: 返回的是 ` Google Optional ` 而不是 ` Java Optional `
100
+
103
101
---
104
102
_ 其他的答案都大同小异,感兴趣的可以看原帖_
105
103
stackoverflow链接
106
- http://stackoverflow.com/questions/604424/lookup-enum-by-string-value
107
- _ 译者:[ MagicWolf] ( https://github.com/DaiDongLiang ) _
104
+ [ Lookup enum by string value
105
+ ] ( https://stackoverflow.com/questions/604424/lookup-enum-by-string-value )
106
+ _ 译者:[ MagicWolf] ( https://github.com/DaiDongLiang ) _
0 commit comments