[英]How to get enum value from string if value doesn't match
我有枚舉:
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"));
}
}
您可以在枚舉中實現自己的方法,並在每次需要使用 String 枚舉時調用該方法。
上面的代碼將打印一個 output 如下
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 所解釋的那樣,良好的做法總是將其作為 static 方法放入ENUM
本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.