[解決済み] 返された値がNULLでないことを確認し、NULLであればそれを代入する。
2023-04-18 16:24:08
質問
Javaには、次のような記述が散見されます。
if(cage.getChicken() != null) {
dinner = cage.getChicken();
} else {
dinner = getFreeRangeChicken();
}
という2つの呼び出しを必要とします。
getChicken()
に割り当てられる前に
dinner
.
これも、次のように1行で書くことができます。
dinner = cage.getChicken() != null? cage.getChicken() : getFreeRangeChicken();
しかし、残念ながら、まだ
getChicken()
.
もちろん、ローカル変数を代入して、それがNULLでなければもう一度三項演算子を使って代入することもできますが、これでは2行になり、あまりきれいではありません。
FutureMeal chicken = cage.getChicken();
dinner = chicken != null? chicken : getFreeRangeChicken();
ということは、何か方法があるのでしょうか。
変数 var = ある値 if ある値が null でない or ある他の の値でなければなりません。
そして、私はここで構文について話しているだけで、コードがコンパイルされた後、おそらくパフォーマンスの意味でコードがどのように書かれたかに大きな違いはないのだと思います。
これは一般的なコードなので、それを書くためのワンライナーがあれば最高です。
他の言語にはこの機能はないのでしょうか?
どのように解決するのですか?
Javaにはcoalesce演算子がないため、明示的なtemporaryを使用したコードは、1回の呼び出しで代入できる最適な方法です。
このように、結果変数をテンポラリとして使用することができます。
dinner = ((dinner = cage.getChicken()) != null) ? dinner : getFreeRangeChicken();
しかし、これでは読みにくい。
関連
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
[解決済み] 複数の値を返す関数から代入する方法は?
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
[解決済み] 文字列がヌルでなく、空でないかをチェックする
-
[解決済み】C#で、Nullオブジェクトに対して拡張メソッドを呼び出すとどうなるか?
-
[解決済み】C++でポインタにNULLと0(ゼロ)のどちらを使うか?
-
[解決済み】EclipseのコードフォーマッターをJavaコードの特定のセクションでオフにする方法は?
-
[解決済み] C#でnullでない場合のメソッド呼び出し
-
[解決済み] NULLかどうかをチェックし、NULLでなければ別の値を代入する最短の方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
Javaジェネリックを1つの記事で
-
セミコロン期待値エラー解決
-
FindBugの使用概要
-
maven レポート エラー 解決不可能な親POM
-
Java基礎 - マッピングとQ/A
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
ApiModel と @ApiModelProperty の使用法