この質問に対する「いいえ」の答えを待っています。
if節で変数をチェックすると同時に変数を保存できるかどうかに興味がありました。
このコードがあるとしましょう。
if(foo!=null){
if(foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
} else {
System.out.println("Failure.");
}
結果が同じであっても、「失敗」状態を個別に処理するようになりました。次のようにまとめることができます。
if(foo!=null && foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
すでにはるかにきれいなコード。foo が null の場合、そこで停止し、(if で) foo.getBar を試行しないため、NPE は取得されません。私が強化したい最後のことと主な質問: foo.getBar() を 2 回呼び出すことは本当にありますか? getBar() が非常に負荷の高い操作になる場合は、2 回目の同一の呼び出しを回避できればよいでしょう。だから、これに似た何かをすることが何とか可能かどうか疑問に思っています:
if(foo!=null && (Bar bar = foo.getBar())!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
私がやりたいのであれば、それを2つの異なるものに分割する必要があります
Bar bar = foo.getBar();
if (bar!=null) ...