1

以下を含む Java コードを見ています。

User rv = tmp != null && tmp.size() > 0 ? tmp.get(0) : null;

私は Java 構文があまり得意ではありません。私の解釈は、 is が is である限り、rv = tmpそうでなければ等しいということです。私は正しいですか?tmpnull tmpsize> 0null

4

4 に答える 4

7

この式の「構造」は次のとおりです。

rv =                                // assignment of a conditional expression
    (tmp != null && tmp.size() > 0) // condition
?   tmp.get(0)                      // on true
:   null;                           // on false

これは、リストの要素 0 にアクセスする例外がないことを保証する一般的な方法です。条件は、 でtmpはないことnull、およびサイズが 1 以上であることを保証します。

于 2013-10-23T02:14:09.350 に答える
3

これは三項条件式です:

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;
 }
于 2013-10-23T02:15:01.997 に答える
2
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 ;
于 2013-10-23T02:16:40.853 に答える