以下に示すように、条件演算子を使用していました..
String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");
ここで、a.active が true で b.active も true の場合、結果は Active になるはずですが、最初に a.active が失敗した場合、npo は b.isactive をテストする必要があるだけで、アクティブではありません。正しいかどうか。
以下に示すように、条件演算子を使用していました..
String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");
ここで、a.active が true で b.active も true の場合、結果は Active になるはずですが、最初に a.active が失敗した場合、npo は b.isactive をテストする必要があるだけで、アクティブではありません。正しいかどうか。
あなたの実装はすでに正しいです。「怠惰」な側面 ( true を返すb.isActive()
場合にのみ呼び出す) は、ショートサーキットであるオペレーターの動作によって処理されます。a.isActive()
&&
条件付き AND 演算子 && は & (§15.22.2) に似ていますが、左側のオペランドの値が true の場合にのみ右側のオペランドを評価します。
これを条件演算子の条件 (第 1 オペランド) として使用しているという事実は関係ありません。したがって、コードは次と同等です。
boolean active = a.isActive() && b.isActive();
String AccessType = (active ? "Active" : "NotActive");
ただし、コードに2つの変更を加えます。
accessType
。camelCase
変数に使用する Java 命名規則。そう:
String accessType = a.isActive() && b.isActive() ? "Active" : "NotActive";
1. Now I want that if a.active is true and b.active is also true then
the result should be Active
boolean status = a.isActive() && b.isActive();
文字列値 = ステータス ? "アクティブ" : "非アクティブ";
2. if initially a.active fails then no need to test b.isactive
Java はShort circuit Evaluationに従うので、Java が自動的に実行することを気にする必要はありません。
条件付き演算子を見てみましょう
boolean isAActive = a.isActive();
boolean isBActive = b.isActive();
String AccessType = (isAActive && isBActive) ? "Active" : "NotActive";
それ以外の
String AccessType = (a.isActive() && b.isActive() ? "Active" : "NotActive");
括弧内の条件を使用する
読みやすくするために、条件をラップすることができます
a.isActive() && b.isActive()
丸括弧内()
:
(a.isActive() && b.isActive())
また、最後にブラケットは必要ありません。したがって、最終的な条件は次のようになります。
(a.isActive() && b.isActive()) ? "Active" : "NotActive";
括弧はオプションであるため、条件は次のように書き直すことができます。
a.isActive() && b.isActive() ? "Active" : "NotActive";