Подтвердить что ты не робот

JAVA вызывает метод с использованием тернарного оператора

Я пытаюсь использовать? чтобы решить, какой метод я хочу вызвать, но мне не нужно назначать переменную. Мой вопрос: есть ли способ использовать тернарный оператор без назначения переменной?

(something i dont need) = (x == 1)? doThisMethod():doThatMethod()

вместо

if(x == 1) {
    doThisMethod()
} else {
    doThatMethod()
}
4b9b3361

Ответ 1

Это не сработает, так как это не намеренное использование тернарного оператора.

Если вы действительно хотите, чтобы это была 1 строка, вы можете написать:

if (x==1) doThisMethod(); else doThatMethod();

Ответ 2

Я сомневаюсь, что это работает. JLS §15.25 определяет тройное выражение следующим образом:

ConditionalExpression:
    ConditionalOrExpression
    ConditionalOrExpression ? Expression : ConditionalExpression

И ConditionalExpression не является Statement сам по себе. Его можно использовать в различных других местах, хотя, например, Assignment:

AssignmentExpression:
    ConditionalExpression
    Assignment

Assignment:
    LeftHandSide AssignmentOperator AssignmentExpression

Ответ 3

Согласно & sect; 14.8 "Выражения выражений" Спецификации языка Java, единственными выражениями, которые могут использоваться в качестве операторов как:

  • назначения
  • предварительно – и пост-приращения и pre – и пост-декременты
  • вызов методов
  • выражения создания экземпляра класса (вызовы конструктора)

Ответ 4

Гораздо более диверсифицированный, если поток должен был сломаться после вызова метода. Это можно использовать, но слово предостережения, если поток не прерывается после того, как тогда оба метода будут выполнены.

if (x==1) 
doThisMethod();
doThatMethod();