我有点在等待这个问题的'不'的答案。你可以在if子句中存储一个变量吗?
我感兴趣的是如果您可以在if-clause中检查时同时保存一个变量。
假设我有这个代码。
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,它会停在那里,不会尝试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) ...
顺便说一下,这是“失败”。 – 2009-02-19 14:53:43