Оптимизация кода (избежать 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() {};
→ Ссылка