Skip to content

Commit 124eadd

Browse files
author
李奕慧
committed
look-enum-by-string-value.md 排版和更新
1 parent ca5550b commit 124eadd

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

contents/lookup-enum-by-string-value.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
1-
Java 中如何将 String 转换为 enum
2-
=======
1+
# Java 中如何将 String 转换为 enum
32

4-
###问题
5-
6-
###我有一个 enum 类
7-
8-
``` java
3+
### 问题
4+
enum 类
5+
```java
96
public enum Blah {
107
A, B, C, D
118
}
129
```
13-
我想要找到一个 `String` 对应的 enum 值。例如, `"A"` 将是 `Blah.A`.如何做到?
14-
15-
我需要使用 `Enum.valueOf()` 方法吗? 如果是该如何使用?
10+
如何根据枚举类型的值(比如 "A" ) 得到 `Blah.A`?
1611

1712
---
1813

1914
### A1
2015

2116
是的, `Blah.valueOf("A")` 将会给你 `Blah.A`.
2217

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")中显示了这两个方法。
2420

2521

2622
### A2
@@ -80,7 +76,7 @@ public static <T extends Enum<T>> T getEnumFromString(Class<T> c, String string)
8076
return null;
8177
}
8278
```
83-
之后,在我的enum类中通常如此使用来减少打字:
79+
之后,在我的enum类中通常如此使用来减少代码量:
8480
``` java
8581
public static MyEnum fromString(String name) {
8682
return getEnumFromString(MyEnum.class, name);
@@ -91,17 +87,20 @@ public static MyEnum fromString(String name) {
9187

9288
_评论区对于答主的异常处理一片指责 -译者注_
9389

94-
###A4
95-
如果你不想编写自己的工具类,可以使用 Google的 `guava` 库:
90+
### A4
91+
如果你不想编写自己的工具类,可以使用 Google的 [Google guava](https://github.com/google/guava) 库:
9692
``` java
9793
Enums.getIfPresent(Blah.class, "A")
9894
```
9995
它让你检查是否 `Blan`中存在 `A`并且不抛出异常
10096

10197
_完整方法签名 `Optional<T> getIfPresent(Class<T> enumClass, String value)` , `Optional` 对象可以优雅的解决null值问题 -译者注_
10298

99+
> 注意: 返回的是 `Google Optional` 而不是 `Java Optional`
100+
103101
---
104102
_其他的答案都大同小异,感兴趣的可以看原帖_
105103
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

Comments
 (0)