これまでのところ、私はネットを検索してきましたが、ステートメントには常にifやelseの条件(a ? b : c
など)があります。 if
三項ステートメントがelse
なしで使用できるかどうかを知りたいです。次のコードがあると仮定すると、PreparedStatement
がnullでない場合は閉じたい
(私はJavaプログラミング言語を使用しています。)
PreparedStatement pstmt;
//....
(pstmt!=null) ? pstmt.close : <do nothing>;
いいえ、できません。 代わりにこれを試してください:
if(bool1 && bool2) voidFunc1();
書き出すだけですか?
if(pstmt != null) pstmt.close();
まったく同じ長さです。
選択肢が1つしかないのに、なぜ三項演算子を使用するのですか?
if (pstmt != null) pstmt.close();
十分です!
他の回答で述べたように、三項演算子を使用してこれを行うことはできません。
ただし、必要に応じて、Java 8 オプション とラムダを使用して、この種のロジックを単一のステートメントに入れることができます。
Optional.of(pstmt).ifPresent((p) -> p.close())
三項演算は三項と呼ばれるため、3つの引数を取り、2をとる場合は二項演算です。
また、上記のように、値を返すexpressionです。
Elseを省略すると、式が値を返さない未定義の状況になります。
したがって、他の回答でも指摘されているように、if statementを使用する必要があります。
他の条件なしで三項を使用することはできませんが、1行で「if-without-else」を実行するには、Java 8 Optional
class。]を使用できます。
PreparedStatement pstmt;
//....
Optional.ofNullable(pstmt).ifPresent(pstmt::close); // <- but IOException will still happen here. Handle it.