簡體   English   中英

在If條件下匹配Java中的枚舉字符串

[英]Matching enum Strings in Java in If conditions

我有一個枚舉:

public enum Status{
   A("A"),
   B("B"),
   C("C"),
   D("D"),
   E("E")
}

A,B,C屬於一個類別,D&E屬於不同類別。 現在當我得到一個字符串時,我想決定它屬於哪個類別。基本上,

String s;
if   s.equals( Status.A.toString()) || s.equals(Status.B.toString()) || s.equals( Status.C.toString()) 
            return 1; 

        else return 2;

現在,這可以通過5個字母來管理。 如果我有26個字母,if條件的數量將無法管理。 有沒有更好的方法來寫這個?

而不是在代碼中確定類別,而是將其存儲在enum本身中。 您不僅限於單個存儲屬性; 你可以擁有任意多的人。

更改構造函數以獲取除字母之外的類別,並將其存儲在enum

public enum Status {
    A("A", 1),
    B("B", 1),
    C("C", 1),
    D("D", 2),
    E("E", 2);
    private String name;
    private int category;
    public String getName() { return name; }
    public int getCategory() { return category; }
    Status(String name, int category) {
        this.name = name;
        this.category = category;
    }
}

現在很清楚哪個枚舉屬於哪個類別,因為類別是以聲明方式而不是算法方式分配的。

如何維護每個類別的枚舉列表,然后將您的字符串與類別列表中的枚舉進行比較? 請參閱以下示例。

    List<Status> category1 = new ArrayList<Status>();
    category1.add(Status.A);
    category1.add(Status.B);
    category1.add(Status.C);
    List<Status> category2 = new ArrayList<Status>();
    category2.add(Status.D);
    category2.add(Status.E);

    for(Status e : category1) {
        if(s.equals(e.toString()))
            return true;
    }

    for(Status e : category2) {
        if(s.equals(e.toString()))
            return true;
    }

    return false;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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