これを変更することは可能ですか?
if(String!= null) {
callFunction(parameters);
} else {
// Intentionally left blank
}
...三項演算子に?
さて、Javaの_ternary operator
_はこのように動作します...
_return_value = (true-false condition) ? (if true expression) : (if false expression);
_
...別の見方...
_return_value = (true-false condition)
? (if true expression)
: (if false expression);
_
あなたの質問は漠然としていますが、ここで想定しなければなりません。
(およびifのみ)callFunction(...)
が_non-void
_戻り値(Object
、String
、int
を宣言する場合、double
など)-コードを介してそれを行わないようです-その後、これを行うことができます...
_return_value = (string != null)
? (callFunction(...))
: (null);
_
callFunction(...)
が値を返さない場合、cannot三項演算子を使用します!そのような単純な。必要のないものを使用します。
それにもかかわらず、三項演算子は代替の割り当てのみを表す必要があります!!あなたのコードはそれをしていないようですので、そうするべきではありません。
これは彼らが働くべき方法です...
_if (obj != null) { // If-else statement
retVal = obj.getValue(); // One alternative assignment for retVal
} else {
retVal = ""; // Second alternative assignment for retVale
}
_
これはに変換することができます...
_retVal = (obj != null)
? (obj.getValue())
: ("");
_
あなたはこのコードを1行にリファクタリングしようとしているようですので、以下を追加しました
また、偽句が本当に空の場合、これを行うことができます...
_if (string != null) {
callFunction(...);
} // Take note that there is not false clause because it isn't needed
_
OR
_if (string != null) callFunction(...); // One-liner
_
はい。 null
ブロックに同じelse
を保持することができます。
_String result = str !=null ? callFunction(parameters) : null;
_
callFunction(parameters)
がString
を返すことを確認してください。
三項演算子を使用して、2つの式を組み合わせることができますが、空の文は式ではありません。
メソッド呼び出しが式として使用できるのは、メソッドが値を返す場合(read:はvoid
で宣言されていない)、ダミー定数null
と一緒に使用して三項演算子を形成できますが、結果は、statementが必要な場所では許可されない式になります。つまり、if
ステートメントを置き換えることはできません。
式を取り、追加の副作用を課さない別の構成を追加することにより、完全な置換を構成できます。例えば。取得する新しいローカル変数を宣言して割り当てることにより、以下を取得します。
_Object dummy=condition? callFunction(parameters): null;
_
ただし、単にif(condition) callFunction(parameters);
と言ってもメリットはありません。戻り値がプリミティブ型の場合、自動ボクシングを実行するため、不要なオーバーヘッドが追加される可能性もあります。
Java 8には、void
メソッドでも機能するパズルの解決策があります。
_((Runnable)(condition? ()->callFunction(parameters): ()->{})).run();
_
しかし、単にif
を使用する以上の利点はありません。
メソッドcallFunction()
が戻り値型を持っている場合、可能性があります。その後、SURESH ATTAが彼の答えに書いたように、あなたはそれをすることができます:
_String result = str!=null ? callFunction(str) : null;
_
または、結果またはその他の引数に他の型を使用します。 else
- statementのメソッドも呼び出したい場合、このメソッドはif
- statementのメソッドと同じ戻り値の型を持つ必要があります。
メソッドに戻り型がない場合/ callFunction()
の戻り型がvoid
である場合、if
-_else
を変更することはできません-三項演算子へのステートメント。