簡體   English   中英

如果值不匹配,如何從字符串中獲取枚舉值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM