目标:
- 表示从抽象类中定义的字符串创建的字符串子集
- 测试输入的字符串是否属于给定子集
初始解决方案:
让我们列出可能发生的事件。
/**
* 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,并且仅对这些事件允许执行某些操作。目标是 make 方法 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)enum - 创建字符串枚举
- 输入枚举: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 - 测试 String 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 - 测试 String 属于常量子集的正确方法 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209565/