![]() |
1
2113
对,
请注意,名称必须是
准确的
匹配,包括大小写:
静态方法
|
![]() |
2
808
如果文本与枚举值不同,则另一个解决方案:
|
![]() |
3
115
我使用的是一个漂亮的实用程序:
然后在我的枚举类中,我通常使用这个来保存一些输入:
如果您的枚举不是全部大写,只需更改
可惜我不能用
|
![]() |
4
75
使用Joshua Bloch的图案, 通用程序设计 : (为了简洁而简化)
另请参见: Oracle Java Example using Enum and Map of instances |
![]() |
5
73
你也应该小心处理你的案子。让我解释一下:做
编辑
编辑2
在Android上,你应该使用
|
![]() |
6
37
这里有一个方法可以对任何枚举执行此操作,并且不区分大小写。
|
![]() |
7
32
使用
|
![]() |
8
26
如果你不想写你自己的工具,使用谷歌的 guava 图书馆:
与内置的Java函数不同,它让我们检查是否存在BLAH,并且不会抛出异常。 |
![]() |
9
23
这里我的2分:使用Java8流+检查精确的字符串:
**编辑**
已将函数重命名为
|
![]() |
10
23
在Java 8或更高版本中,使用 Streams :
|
![]() |
11
14
您可能需要这样做:
再加一个:
这将按字符串化的枚举名称返回值,例如,如果在fromEnumName中提供“person”,它将返回枚举的值,即“person”。 |
![]() |
12
11
使用隐式静态方法的另一种方法
测试:
|
![]() |
13
7
使用guava库的解决方案。方法getPlanet()不区分大小写,因此 GetPlanet(“Mercury”)将返回Planet.Mercury。
|
![]() |
14
6
为了增加前面的答案,并解决一些关于nulls和npe的讨论,我使用guava选项来处理缺席/无效的案例。这对于URI/参数解析非常有用。
对于那些不知道的人,下面是关于使用可选选项避免空值的更多信息: https://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained#Optional |
![]() |
15
6
在Java 8中,静态映射模式更容易,是我的预处理方法。如果要将枚举与Jackson一起使用,可以重写ToString并使用它而不是名称,然后用注释
|
![]() |
16
5
|
![]() |
17
4
o(1)方法的灵感来源于节俭的代码,该代码使用哈希图。
|
![]() |
18
3
在这个代码段中,
|
![]() |
19
3
阿帕奇的 commons-lang 库具有静态函数 org.apache.commons.lang3.EnumUtils.getEnum 它将字符串映射到枚举类型。基本上和杰弗里斯的答案一样,但为什么当它已经在野外的时候,还要自己滚呢? |
![]() |
20
3
添加到最热门的答案,有一个有用的实用程序…
如果您的要求是这样的,您没有任何保证您的字符串一定会匹配枚举值,例如,如果字符串数据来自数据库并且可能包含枚举的旧版本,那么您需要经常处理这些… 所以这里有一个我编写的可重用方法,它允许我们定义一个默认的枚举,如果我们传递的字符串不匹配,它将被返回。
这样使用:
|
![]() |
21
2
怎么办?
|
![]() |
22
1
以相反的方式捕获另一个实用程序。使用标识该枚举的值,而不是其名称。
例子:
|
![]() |
23
1
作为一个
因为这不会给
通过提供默认值,我们保留
contract
属于
这种方法采用了
|
![]() |
24
1
枚举非常有用,我一直在使用
然后您可以根据传递给
|
![]() |
25
0
我喜欢使用这种过程将命令作为字符串解析为枚举。我通常将其中一个枚举设置为“未知”,因此在未找到其他枚举时返回(即使是在不区分大小写的基础上),而不是空枚举(这意味着没有值)会有所帮助。因此我使用这种方法。
|
![]() |
26
0
获取枚举名称的最快方法是在应用程序启动时创建枚举文本和值的映射,并获取名称调用函数blah.getEnumName():
|