java - 测试字符串属于常量子集的正确方法(Java)

标签 java string enums subset

目标:

  • 表示从抽象类
  • 中定义的字符串创建的字符串子集
  • 测试输入字符串是否属于给定子集

  • 初步解决方案:

    让我们列出可能的事件。
    /**
    * List of events.
    */
    public abstract class EventKeys {
    
         public static final String KEY_EVENT_1 = "EVENT_1";
         public static final String KEY_EVENT_2 = "EVENT_2";
         public static final String KEY_EVENT_3 = "EVENT_3";
         public static final String KEY_EVENT_4 = "EVENT_4";
         public static final String KEY_EVENT_5 = "EVENT_5";
         public static final String KEY_EVENT_6 = "EVENT_6";
         public static final String KEY_EVENT_7 = "EVENT_7";
         //etc ..
    }
    

    我想制作这些事件的子集,例如事件 1、3、5,并且只有这些事件允许一些操作。目标是使方法 boolean isEventAllowed(String eventKey) 说明事件是否属于允许事件的子集。

    真正天真的方法是:
    /**
    * Allow only events 1,3,5
    */
    private isEventAllowed(String eventKey) {
    
        if(eventKey.equals(EventKeys1.KEY_EVENT_1)) {
            return true;
        } else if(eventKey.equals(EventKeys1.KEY_EVENT_3)) {
            return true;
        }  else if(eventKey.equals(EventKeys1.KEY_EVENT_3)) {
            return true; 
        } else {
            return false;
        }
    }
    

    我觉得这种方法不是很方便。我需要更好的方法 表示字符串的子集并提供操作输入字符串是否属于定义的子集?

    其他可能的解决方案:
    作为其他选项,我正在考虑其他两个选项,但我仍然不确定它是否是好的方法。
    1)枚举 - 创建字符串枚举
  • 放入枚举:EventKeys1.KEY_EVENT_1, EventKeys1.KEY_EVENT_2, EventKeys1.KEY_EVENT_3
  • 测试 String keyEvent 是否属于定义的枚举?

  • 2) 列表
  • 创建列表 List<String> subset并放在那里
    EventKeys1.KEY_EVENT_1、EventKeys1.KEY_EVENT_2、EventKeys1.KEY_EVENT_3
  • 测试字符串 keyEvent 是否属于列表子集

  • 请在回答 之前阅读此内容:
  • 给定类 EventKeys,无法更改,主要选项集
  • 我需要以某种方式表示子集
  • 我需要更好地实现方法 isAllowedEvent(String keyEvent) 的建议,如果输入字符串则返回 true
    属于定义的子集
  • 最佳答案

    这样的事情怎么样?

        private boolean isEventAllowed(String eventKey) {
          return Arrays.asList(KEY_EVENT_1, KEY_EVENT_3, KEY_EVENT_5).contains(eventKey);
        }
    

    在 John Fergus 的评论之后,可以通过使用以下内容来提高可读性:
        private static List<String> SUBSET = Arrays.asList(KEY_EVENT_1, KEY_EVENT_3, KEY_EVENT_5);
    
        private boolean isEventAllowed(String eventKey) {
          return SUBSET.contains(eventKey);
        }
    

    关于java - 测试字符串属于常量子集的正确方法(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209565/

    相关文章:

    enums - 匹配枚举时无法移出借用的内容

    java - 使用对象属性的JPA命名查询

    java - 如何使用 java/android 从 Firebase ONCE 读取数据?

    javascript - 如何用Javascript解析此Date?

    c - 将一个char数组拆分为char数组时,第一个数组始终显示为随机char

    C++ 在方程式中使用变量;错误 : expression must have integral or unscoped enum type & others

    java - 什么时候 Java 子例程不是方法?

    java - Collectors toMap() - 从 Map.Entry 到 Map 结构的值映射器

    java - 数字格式异常-使用parseInt进行转换

    java - 直接在枚举中使用Wicket属性