检查String是否等于枚举常量的名称

时间:2015-11-12 16:56:14

标签: java enums

我想检查给定的String是否等于我的Enum类中的任何枚举常量名称。这是一个例子:

public enum Relation { 
    APPLE("an apple"), 
    BANANA("a banana"); 

    private String value; 

    private Relation(String s) { 
        this.value = s; 
    } 

    public String getValue() { 
        return this.value; 
    }
}

My String将是:

String test = "a banana";

我想检查字符串是否等于任何枚举常量名称,即"一个苹果"或"香蕉":

if (test.equals(....)) {
 System.out.println("You ordered a banana.");
 }

到目前为止,我发现的示例都适用于检查String是否等于Enum常量。但我想检查字符串是否等于括号中定义的任何常量名称。

2 个答案:

答案 0 :(得分:2)

for (Relation relation : Relation.values()) {
   if (relation.getValue().equals(string)) {
      return relation;
   }
}
return null;

答案 1 :(得分:0)

您可以使用map /或set来存储枚举值,然后您可以检查匹配值。

只有在您想重复执行此操作并重复使用地图或集合时,这才有用。如果你想获得相关的枚举,你可以使用地图。

    Map<String, Relation> map = new HashMap<>();
    for (Relation relation : Relation.values()) {
        map.put(relation.getValue(), relation);
    }

    if(map.containsKey("a banana")){
        System.out.println("You ordered a banana.");
    }

或作为一套:

    Set<String> set = new HashSet<>();
    for (Relation relation : Relation.values()) {
        set.add(relation.getValue());
    }

    if(set.contains("a banana")){
        System.out.println("You ordered a banana.");
    }