在If条件下匹配Java中的枚举字符串

use*_*342 2 java enums

我有一个枚举:

public enum Status{
   A("A"),
   B("B"),
   C("C"),
   D("D"),
   E("E")
}
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

现在,这可以通过5个字母来管理.如果我有26个字母,if条件的数量将无法管理.有没有更好的方法来写这个?

das*_*ght 5

而不是在代码中决定类别,而是将其存储在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;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在很清楚哪个枚举属于哪个类别,因为类别是以声明方式而不是算法方式分配的.