17

私は使用しようとしていますか?どのメソッドを呼び出すかを決定しますが、変数を割り当てる必要はありません。私の質問: 変数を割り当てずに三項演算子を使用する方法はありますか?

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

それ以外の

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

4 に答える 4

25

これは、三項演算子の意図された用途ではないため、機能しません。

本当に1行にしたい場合は、次のように書くことができます:

if (x==1) doThisMethod(); else doThatMethod();
于 2012-09-28T16:40:10.337 に答える
6

これがうまくいくとは思えません。JLS§15.25では、3項式を次のように定義しています

ConditionalExpression:
    ConditionalOrExpression
    ConditionalOrExpression ? Expression : ConditionalExpression

そして、aConditionalExpressionはそれ自体ではありませんStatement。ただし、他のさまざまな場所で使用できますAssignment

AssignmentExpression:
    ConditionalExpression
    Assignment

Assignment:
    LeftHandSide AssignmentOperator AssignmentExpression
于 2012-09-28T16:43:41.987 に答える
1

Java 言語仕様の §14.8「式ステートメント」によると、ステートメントとして単独で使用できる唯一の式は次のとおりです。

  • 課題
  • プレインクリメントとポストインクリメント、およびプレインクリメントとポストデクリメント
  • メソッド呼び出し
  • クラス インスタンス作成式 (コンストラクター呼び出し)
于 2012-09-28T16:46:05.473 に答える