2
public enum Test {
    a("This is a"),
    b("This is b"),
    c("This is c"),
    d("This is d");

    private final String type;

    Test(String type) {
        this.type = type;
    }

    public String getType() {
         return type;
    }
}

以上是我的简单代码。有人可以教我如何通过使用 desc 来获取名称吗?
例如:我有一个字符串“This is c”,我想用这个字符串来获取Test.c

4

3 回答 3

4

使用枚举的values方法,迭代它,你就可以得到它。

public enum Test {
    a("This is a"),
    b("This is b"),
    c("This is c"),
    d("This is d");

    private final String type;

    Test(String type) {
        this.type = type;
    }

    public String getType() {
         return type;
    }

    public static Test getByDesc(String desc){
      for(Test t : Test.values()){
        if(t.getType().equals(desc)){
          return t;
        }
      }
      return null;
    }

}
于 2013-03-04T08:44:13.580 回答
3

假设您想经常这样做,您需要构建一个从 type (代码中没有任何称为“description”的东西)到Test. 例如:

// Within Test
private static final Map<String, Test> typeMap = createTypeMap();

private static Map<String, Test> createTypeMap() {
    Map<String, Test> ret = new HashMap<String, Test>();
    for (Test test : Test.values()) {
        ret.put(test.type, test);
    }
    return ret;
}

public static Test fromType(String type) {
    return typeMap.get(type);
}
于 2013-03-04T08:44:51.293 回答
0

该方法将根据枚举值返回枚举类型

public static Test getEnum(String enumValue) {

        for (Test c : Test.values()) {

            if (c.getValue().equalsIgnoreCase(enumValue))

                return c;

        }

        return null;

    }
于 2013-03-04T08:48:06.133 回答