我正在尝试针对一个Enum集进行查询,因为知道经常会有不匹配项引发异常:我想在执行查询之前检查该值是否存在以避免异常。我的枚举看起来像这样:

public enum Fruit {
    APPLE("apple"),
    ORANGE("orange");
    ;
    private final String fruitname;
    Fruit(String fruitname) {
        this.fruitname = fruitname;
    }
    public String fruitname() {return fruitname;}
}

并且我想在尝试使用相关枚举之前检查“香蕉”是否是我的枚举值之一。我可以通过比较允许的值来比较我的字符串与
Fruit.values()[i].fruitname

但我希望能够做类似(pseduo-code)的操作:
if (Fruit.values().contains(myStringHere)) {...

那可能吗?我是否应该完全使用其他东西(数组或 map ?)?

编辑:最后,我接受了NawaMan的建议,但是感谢大家的所有帮助。

最佳答案

我真的不知道内置解决方案。因此,您可能必须自己将其编写为静态方法。

public enum Fruit {
   ...
   static public boolean isMember(String aName) {
       Fruit[] aFruits = Fruit.values();
       for (Fruit aFruit : aFruits)
           if (aFruit.fruitname.equals(aName))
               return true;
       return false;
   }
   ...
}

07-27 13:30