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