我想检查给定的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常量。但我想检查字符串是否等于括号中定义的任何常量名称。
答案 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.");
}