Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b48d673

Browse files
add question convert-a-string-to-an-enum-in-java
1 parent 1000ff2 commit b48d673

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
##如何将String转换为enum
2+
3+
4+
5+
### 问题
6+
一个枚举定义:
7+
8+
```java
9+
public enum Blah {
10+
A, B, C, D
11+
}
12+
```
13+
并且我知道枚举的String值,比如 "A",我想将其转换为Blah.A,我应该怎么做?
14+
是否有Enum.valueOf() 这样的方法,如果是,那我如何使用?
15+
16+
17+
### 答案
18+
是的,Blah.valueOf("A") 将会得到 Blah.A
19+
20+
静态方法valueOf() 和 values() 会在编译期创建,不过这不会体现在源代码内,他们出现在JavaDoc中,比如 [Dialog.ModalityTyp](http://docs.oracle.com/javase/7/docs/api/java/awt/Dialog.ModalityType.html) 中出现这两个方法。
21+
22+
### 其他答案
23+
24+
我有一个友善的工具方法:
25+
```java
26+
/**
27+
* A common method for all enums since they can't have another base class
28+
* @param <T> Enum type
29+
* @param c enum type. All enums must be all caps.
30+
* @param string case insensitive
31+
* @return corresponding enum, or null
32+
*/
33+
public static <T extends Enum<T>> T getEnumFromString(Class<T> c, String string) {
34+
if( c != null && string != null ) {
35+
try {
36+
return Enum.valueOf(c, string.trim().toUpperCase());
37+
} catch(IllegalArgumentException ex) {
38+
}
39+
}
40+
return null;
41+
}
42+
```
43+
44+
你可以这么使用:
45+
46+
```java
47+
public static MyEnum fromString(String name) {
48+
return getEnumFromString(MyEnum.class, name);
49+
}
50+
```
51+
52+
stackoverflow链接:http://stackoverflow.com/questions/604424/convert-a-string-to-an-enum-in-java

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /