Цель:Правильный путь испытания, что строка принадлежит подмножеству констант (Java)
- Представляют подмножество строк, созданных из строк, определенных в абстрактном классе
- тест, если строка на входе принадлежит к данной подгруппе
Первоначальное решение:
Давайте Лис t возможных событий.
/**
* 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) перечисление - создать перечисление строк
- Put в перечислении: EventKeys1.KEY_EVENT_1, EventKeys1.KEY_EVENT_2, EventKeys1.KEY_EVENT_3
- Test делает Строка KeyEvent belons для определенного перечисления?
2) Список
- создать список
List<String> subset
и поставить там EventKeys1.KEY_EVENT_1, EventKeys1.KEY_EVENT_2, EventKeys1.KEY_EVENT_3 - тест, если строка KeyEvent принадлежит к списку подмножество
ПОЖАЛУЙСТА, ПРОЧТИТЕ ЭТО ПЕРЕД ОТВЕТОМ:
- EventKeys класса дается, не может быть изменен, основной набор опций
- мне нужно как-то представляет подмножество
- Мне нужен совет для более эффективной реализации метода isAllowedEvent (String KeyEvent), которая возвращает true, если строка ввода принадлежит определенному подмножеству
Рассмотрите возможность использования 'java.util.Set' (например,' 'java.util.HashSet', java.util.TreeSet', ...) –
@ B.Kemmer на момент в коде, позже, может быть, в каком-то файле конфигурации, который каким-либо образом будет отображаться в абстрактном классе KeyEvent. Usecase заключается в том, что на событиях в абстрактном классе делается какое-то действие, мне нужно сделать какое-то другое действие только для некоторых событий и нужно каким-то образом представлять подмножество. Согласно комментариям, наиболее подходящим может быть, вероятно, HashSet + содержит (eventKey) Это понятно и легко настраивается и дефинити лучше, чем если/else, если решение – user1097772
@jameslarge спасибо за подсказку HashSet, вероятно, будет то, что я хочу – user1097772