目标:
初步解决方案:
让我们列出可能的事件。
/**
* 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)枚举 - 创建字符串枚举
2) 列表
List<String> subset
并放在那里EventKeys1.KEY_EVENT_1、EventKeys1.KEY_EVENT_2、EventKeys1.KEY_EVENT_3
请在回答 之前阅读此内容:
属于定义的子集
最佳答案
这样的事情怎么样?
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/