以下を含む Java コードを見ています。
User rv = tmp != null && tmp.size() > 0 ? tmp.get(0) : null;
私は Java 構文があまり得意ではありません。私の解釈は、 is が is である限り、rv = tmpそうでなければ等しいということです。私は正しいですか?tmpnull tmpsize> 0null
この式の「構造」は次のとおりです。
rv = // assignment of a conditional expression
(tmp != null && tmp.size() > 0) // condition
? tmp.get(0) // on true
: null; // on false
これは、リストの要素 0 にアクセスする例外がないことを保証する一般的な方法です。条件は、 でtmpはないことnull、およびサイズが 1 以上であることを保証します。
これは三項条件式です:
expr ? value-if-true : value-if-false
exprが true の場合は に評価されvalue-if-true、そうでない場合は に評価されvalue-if-valuseます。
したがって、この場合、次と同等です。
if (tmp != null && tmp.size() > 0) {
rv = tmp.get(0);
} else {
rv = null;
}
rv = ((tmp != null && tmp.size() > 0) ? tmp.get(0) : null);
内側の括弧内の式が true を返す場合、rv は値 tmp.get(0) を保持します。それ以外の場合は、値 null を保持します。
variable = expression ? a : b ;
と類似しています
if expression == true
variable = a;
else
variable =b ;