В настоящее время я нахожусь в ситуации, когда мне приходится писать java-программу, которая обрабатывает различные методы в виде строк после сканирования. В настоящее время я обрабатываю его с помощью метода, который имеет довольно длинный оператор switch-case, который обрабатывает метод в форме строки. Я не уверен, что это хороший подход или нет, поскольку я думаю, что он выглядит и, вероятно, ведет себя грязно, поэтому я хотел спросить, есть ли лучшее решение для моей проблемы.Альтернатива очень длинному оператору switch-case
-1
A
ответ
3
Вместо этого вы можете использовать карту.
final Map<String, Consumer<String>> actionMap = new HashMap<>();
Consumer<String> defaultAction = ...
// add actions to the map
actionMap.put("case 1", s -> { doSomething() });
actionMap.put("case 2", s -> { doSomething() });
actionMap.put("case 3", s -> { doSomething() });
// instead of switch
String action = ...
actionMap.getOfDefault(action, defaultAction).apply(action);
С помощью этой конструкции вы можете выложить свой «ключ» так, как вы хотите, динамически и во многих методов/класса/библиотеки.
Смежные вопросы
- 1. Альтернатива длинному оператору переключения
- 2. Альтернатива * = оператору в MySQL
- 3. Альтернатива оператору goto
- 4. Альтернатива вложенному оператору select
- 5. Альтернатива оператору Modulo
- 6. Альтернатива оператору объединения
- 7. Excel: альтернатива длинному заявлению IF
- 8. имеют доступ к оператору switchcase из другого класса, используя jtextfield
- 9. альтернатива оператору switch/if else?
- 10. Альтернатива оператору goto в Java
- 11. альтернатива оператору if в C++
- 12. Читаемая альтернатива двумерному оператору переключения?
- 13. Haskell альтернатива длинному списку совпадений шаблонов?
- 14. Лучшая альтернатива длинному списку операторов if
- 15. Альтернатива оператору try (?), Подходящему для отображения итератора
- 16. Есть ли альтернатива этому длинному списку «if argA == argB do ...»?
- 17. Пакет развертывания проекта ASP .Net, созданный по очень длинному пути
- 18. SQL Альтернатива оператору IN с переменной и между
- 19. Есть ли альтернатива оператору LINQ, который не влияет на производительность?
- 20. Альтернатива оператору Switch для группировки результатов - MS Access
- 21. альтернатива оператору instanceof при указании mocks для нескольких веб-сервисов
- 22. Почему тип данных поддерживает максимальное число, равное длинному длинному?
- 23. переход от длинного двойного к длинному длинному int
- 24. Переменная Echo PHP внутри jQuery SwitchCase?
- 25. Почему оператор switchcase в Java работает так?
- 26. Угловая 2 SwitchCase с Fade In
- 27. Альтернативы длинному утверждению
- 28. Передача оператору
- 29. Альтернатива длинному URI для настройки конечной точки верблюда с весенними бобами?
- 30. Заголовка шалить по длинному названию
Без кода невозможно ответить. Если код работает, возможно, вы захотите попробовать http://codereview.stackexchange.com/, а не SO –
. Я нахожу хорошо отложенный и прокомментированный 'switch' более прозрачным, чем серию' if 'особенно потому, что' if' s, как правило, намного более многочисленны, чем 'switch'es. Но это может быть вопрос, который в первую очередь основан на мнениях. –
Вы можете найти решение здесь [ссылка] (http://codereview.stackexchange.com/questions/42125/refactoring-large-switch-statement). Обзор кода - идеальный сайт для этого типа вопросов. – amaiaeskisabel