Оптимизация кода (избежать if else)
У меня имеется определённое количество методов, сигнатуры которых отличаются только второй частью названия. Я вызываю эти методы в зависимости от значения в String переменной, проверяя её значение if else. Возможно ли как-то оптимизировать код таким образом, чтобы убрать огромное количество if else? (использовать switch - плохой ответ)
void main() {
String s = getFomDataBase();
if (s.equals("A")) doA();
else if (s.equals("B")) doB();
else if (s.equals("C")) doC();
else if (s.equals("D")) doD();
}
void doA() {};
void doB() {};
void doC() {};
void doD() {};
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Вы можете заменить if-else на switch-case
switch (s) {
case "A":
doA();
break;
case "B":
doB();
break;
case "C":
doC();
break;
case "D":
doD();
break;
}
ну или заменить на HashMap, если это вам больше подойдет
public static void main(String[] args) {
HashMap<String, Runnable> map = new HashMap<>();
map.put("A", Application::doA);
map.put("B", Application::doB);
map.put("C", Application::doC);
map.put("D", Application::doD);
// .......
String s = "A";
if (map.containsKey(s)) map.get(s).run();
}
static void doA() {};
static void doB() {};
static void doC() {};
static void doD() {};