【问题标题】:Easiest way to find the element is present in ENUM or not in JAVA? [closed]查找元素的最简单方法是在 ENUM 中还是在 JAVA 中? [关闭]
【发布时间】:2020-02-04 02:40:26
【问题描述】:

我需要在运行时使用 java 查找特定的字符串元素是否存在于 ENUM 中,并基于该元素采取行动。这样做的有效方法是什么。

【问题讨论】:

  • 不,你没有。作为一种编译语言,您应该已经知道enum 中的内容。没有猜测工作。你想实际上做什么让你认为你需要反向查找enum
  • 是的,我知道这是不可能的,但是还有其他方法可以让我完成同样的任务,但我想要高效的方法来做同样的事情。
  • 酷:你到底想做什么让你认为你需要反向查找enum
  • 这可能是 x/y 问题

标签: java enums


【解决方案1】:

根据您的要求,一个非常简单的示例。下面是一些关于 Enums 的文档,你也应该看看。 Enum info

鉴于下面的枚举:

enum TestEnum {
    FOO, 
    BAR
}

您可以简单地调用 valueOf 来确定字符串是否对该枚举有效。

public boolean exampleTest(final String value) {
   try {
      TestEnum.valueOf(value);
      return true;
   } catch (final IllegalArgumentException | NullPointerException) {
      // Log if desired
      return false;
   }
}

注意:Enum#valueOf 区分大小写,因此 String 参数必须完全匹配。

exampleTest(“FOO”); // true
exampleTest(null); // false
exampleTest(“BAR”); // true
exampleTest(“bar”); // false

【讨论】:

    【解决方案2】:

    你可以像下面这样 -

    public enum Direction {
       NORTH("North"),
       EAST("East"),
       SOUTH("South"),
       WEST("West")
    
        private String dir;
    
        Direction(String dir) {
            this.dir = dir;
        }
    
        public String getDir() {
            return dir;
        }
    }
    

    要检查特定的字符串,你可以像下面这样 -

    for(Direction dir : Direction.values())
    {
    //check your condition here
        System.out.println(dir.name() + " :: "+ env.getDir());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-12
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      相关资源
      最近更新 更多