检查Object是否与其中一个字段的值同时为null

Max*_*mus 9 java

哪一个是正确的?

if(dialog != null && dialog.isShowing){}

if(dialog.isShowing && dialog != null){}

if(dialog != null){
   if(dialog.isShowing){}
}
Run Code Online (Sandbox Code Playgroud)

Whi*_*g34 12

第一个和第三个都可以使用,因为它们不会处理过去的空检查.第二个可以导致a,NullPointerException因为它dialog在您检查它是否为空之前引用.


alp*_*ian 5

Java中的&&运算符会在遇到错误时立即停止评估(从左到右).因此在

if(dialog != null && dialog.isShowing){}
Run Code Online (Sandbox Code Playgroud)

如果对话框为空,则不会调用dialog.isShowing(),因此使用"安全".

这个:

if(dialog != null){
   if(dialog.isShowing){}
}
Run Code Online (Sandbox Code Playgroud)

也可以工作,但通常嵌套if if语句可以避免,因为它会降低可读性.