TransWikia.com

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

Stack Overflow на русском Asked by Bober on December 7, 2020

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

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

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

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

Пример:

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

public void functionOne() {
   ...
}

public void functionTwo() {
   ...
}

One Answer

Тернарный оператор - это сахар к: 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());

Correct answer by vp_arth on December 7, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP