0

&& 演算子の動作について混乱しています

if (StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && (cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out)))

上記のステートメントは真実になりつつあります

その間

if (StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out))

は false と評価されます。2 つのステートメントの違いは中かっこだけです。

追加の入力として、デバッガーで確認し、

 StringUtils.isNotEmpty(cartModification.getStatusCode() =true
cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out)=true

2番目の部分に余分な括弧を追加したところ、trueと評価されました。データは問題で指摘したものと同じです。

4

1 に答える 1

0

コメントボックスはこれにはあまり適していないため:

これを1回の実行で試してみませんか。

if(StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out))
    System.out.println("First try is true");

if(StringUtils.isNotEmpty(cartModification.getStatusCode()) 
    && (cartModification.getStatusCode().equalsIgnoreCase(UNFCommerceCartModificationStatus.Sell_Out)))
    System.out.println("Second try is true");

何があっても、行がまったく表示されないか、2 行表示される必要があります (両方のステートメントが同じであるため)。

1 行だけが出力される可能性があることに注意getStatusCode()してください。これは、任意の呼び出しが、少なくとも 1 つの条件で使用されている任意の値の変更を呼び出すことを意味します。

于 2013-04-12T09:51:51.570 に答える