Вызов метода класса с помощью тернарного оператора в java

Есть переменная var, которая имеет какое-то значение boolean.

Задача: вызвать метод с типом void в соответствии значению var

Пробовал много разных способов, но все время приходил либо к ошибке "not a statement", либо к необходимости добавления оператора присваивания, но к чему присваивать - неизвестно.

Вопрос: возможно ли построить такую конструкцию без использования if-else?

Пример:

public void function(boolean var) {
   ...
   var ? functionOne() : functionTwo();
   ...
}

public void functionOne() {
   ...
}

public void functionTwo() {
   ...
}

Ответы (1 шт):

Автор решения: vp_arth

Тернарный оператор - это сахар к: var x; if (cond) x = a; else x = b;
Поэтому ветки тернарника должны иметь значение.

Можно сделать что-то вроде:

static void callIf(boolean cond, Runnable ifTrue, Runnable ifFalse) {
    (condition ? ifTrue : ifFalse).run();
}

callIf(var, () -> functionOne(), () -> functionTwo());
→ Ссылка