如何解决如果值不匹配,如何从字符串中获取枚举值
我有一个枚举:
public enum Enumz{
FIRST_VALUE(0,"one"),SECOND_VALUE(1,"two"),THIRD_VALUE(2,"three")
private int id;
private String name;
}
如果我的字符串值与枚举字符串名称匹配,如何查找枚举值?例如:如果我有String = "two"
,我需要得到ENUMZ.SECOND_VALUE
。
解决方法
public enum Enumz {
FIRST_VALUE(0,"one"),SECOND_VALUE(1,"two"),THIRD_VALUE(2,"three");
private int id;
private String name;
Enumz(int id,String name) {
this.id = id;
this.name = name;
}
public static Enumz fromString(String text) {
for (Enumz b : Enumz.values()) {
if (b.name.equalsIgnoreCase(text)) {
return b;
}
}
return null;
}
}
class Sample{
public static void main(String[] args) {
System.out.println(Enumz.fromString("two"));
}
}
您可以在enum中实现自己的方法,并在每次要使用String进行枚举时调用该方法。
以上代码将输出如下内容
OUTPUT
SECOND_VALUE
您可以使用Java 8 stream
替代for loop
String serachValue = "two";
Enumz enumz = Arrays.stream(Enumz.values())
.filter(v -> serachValue.equalsIgnoreCase(v.name))
.findFirst().orElse(null);
如其他@Sagar Gangwal所述,优良作法总是将其作为静态方法放入ENUM
中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。