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;
    }
}

上記は私の簡単なコードです。dess を使用して名前を取得する方法を教えてもらえますか?
例: 「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

これを頻繁に行いたいと仮定すると、タイプ (「説明」と呼ばれるコードには何もありません) から へのマップを構築する必要があります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 に答える