Прокачанный восьмой джавой вариант предыдущего оратора =)
Ну само собой, лямбы можно класть любые и обрабатывать ситуации как угодно, а методы разнести по классам, тут самый простой пример.
Ну и лучше особо восьмой джавой не увлекаться, даже этот пример сквозит стримозом головного мозга и порождает кучу лишних объектов =)
public class App {
private static Map<String, Runnable> actionMap = new HashMap<>();
private static Runnable defaultAction = App::defaultActionMethod;
static {
actionMap.put("Выбор", App::choice);
actionMap.put("МультиВыбор", App::multipleChoice);
actionMap.put("yetanotherSubString", App::yetAnotherSubString);
}
private static void choice() {
System.out.println("doSomething");
}
private static void multipleChoice() {
System.out.println("doThisOrThat");
}
private static void yetAnotherSubString() {
System.out.println("doYetAnotherSomething");
}
private static void defaultActionMethod() {
System.out.println("Action not found.");
}
public static void main(String[] args) {
String[] cases = {"Выбор", "МультиВыбор", "yetanotherSubString", "йуцйцуйцу"};
Stream.of(cases)
.map(actionMap::get)
.map(Optional::ofNullable)
.forEach(runnable -> runnable.orElse(defaultAction).run());
}
}
doSomething
doThisOrThat
doYetAnotherSomething
Action not found.