Вызов метода класса с помощью тернарного оператора в 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());