是否可以在 if 子句中存储变量?
2022-09-02 05:17:22
我有点在等待这个问题的“不”答案。
我感兴趣的是,当你在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.");
}
如果我想做,我必须把它分解成两个不同的,如果再一次
Bar bar = foo.getBar();
if (bar!=null) ...