我有点等待这个问题的“不”回答。
如果您在 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 为空,它将停在那里并且不会尝试 foo.getBar(在 if 中),所以我不会得到 NPE。我想增强的最后一件事,也是主要问题:我真的两次调用 foo.getBar() 吗?如果 getBar() 是一个非常繁重的操作,那么摆脱第二个相同的调用会很好。所以我想知道是否有可能做一些与此类似的事情:
if(foo!=null && (Bar bar = foo.getBar())!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
如果我愿意的话,我必须把它分成两个不同的 if's again
Bar bar = foo.getBar();
if (bar!=null) ...