web-dev-qa-db-ja.com

他に三項演算子がない場合

これまでのところ、私はネットを検索してきましたが、ステートメントには常にifやelseの条件(a ? b : cなど)があります。 if三項ステートメントがelseなしで使用できるかどうかを知りたいです。次のコードがあると仮定すると、PreparedStatementがnullでない場合は閉じたい

(私はJavaプログラミング言語を使用しています。)

PreparedStatement pstmt;

//.... 

(pstmt!=null) ? pstmt.close : <do nothing>;
48
Z.V

いいえ、できません。 代わりにこれを試してください:

if(bool1 && bool2) voidFunc1();
47
frankie liuzzi

書き出すだけですか?

if(pstmt != null) pstmt.close();

まったく同じ長さです。

13
Jeroen Vannevel

選択肢が1つしかないのに、なぜ三項演算子を使用するのですか?

if (pstmt != null) pstmt.close(); 

十分です!

13
cigno5.5

他の回答で述べたように、三項演算子を使用してこれを行うことはできません。

ただし、必要に応じて、Java 8 オプション とラムダを使用して、この種のロジックを単一のステートメントに入れることができます。

Optional.of(pstmt).ifPresent((p) -> p.close())
10
Krease

三項if演算子は、特定の三項演算子です。唯一無二。

から Wiki:

数学では、三項演算はn = 3のn項演算です。

つまり、3つのオペランドすべてが必要です。

10
Yegoshin Maxim

三項演算は三項と呼ばれるため、3つの引数を取り、2をとる場合は二項演算です。

また、上記のように、値を返すexpressionです。

Elseを省略すると、式が値を返さない未定義の状況になります。

したがって、他の回答でも指摘されているように、if statementを使用する必要があります。

8

他の条件なしで三項を使用することはできませんが、1行で「if-without-else」を実行するには、Java 8 Optional class。]を使用できます。

PreparedStatement pstmt;

//.... 

Optional.ofNullable(pstmt).ifPresent(pstmt::close); // <- but IOException will still happen here. Handle it.
0
WesternGun