Ответ 1
Это не сработает, так как это не намеренное использование тернарного оператора.
Если вы действительно хотите, чтобы это была 1 строка, вы можете написать:
if (x==1) doThisMethod(); else doThatMethod();
Я пытаюсь использовать? чтобы решить, какой метод я хочу вызвать, но мне не нужно назначать переменную. Мой вопрос: есть ли способ использовать тернарный оператор без назначения переменной?
(something i dont need) = (x == 1)? doThisMethod():doThatMethod()
вместо
if(x == 1) {
doThisMethod()
} else {
doThatMethod()
}
Это не сработает, так как это не намеренное использование тернарного оператора.
Если вы действительно хотите, чтобы это была 1 строка, вы можете написать:
if (x==1) doThisMethod(); else doThatMethod();
Я сомневаюсь, что это работает. JLS §15.25 определяет тройное выражение следующим образом:
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
И ConditionalExpression
не является Statement
сам по себе. Его можно использовать в различных других местах, хотя, например, Assignment
:
AssignmentExpression:
ConditionalExpression
Assignment
Assignment:
LeftHandSide AssignmentOperator AssignmentExpression
Согласно & sect; 14.8 "Выражения выражений" Спецификации языка Java, единственными выражениями, которые могут использоваться в качестве операторов как:
Гораздо более диверсифицированный, если поток должен был сломаться после вызова метода. Это можно использовать, но слово предостережения, если поток не прерывается после того, как тогда оба метода будут выполнены.
if (x==1)
doThisMethod();
doThatMethod();