嵌套的if-else行为没有大括号

请考虑以下未格式化的嵌套if-else Java代码

 if (condition 1) if (condition 2) action 1; else action 2; 

我的问题是:根据Java语言规范,如果else分支适用该怎么办?

通过手工重新格式化和添加括号,这两个中的哪一个是正确的?

第1块:

 if (condition 1) { if (condition 2) { action 1; } else action 2; } } 

第2块:

 if (condition 1) { if (condition 2) { action 1; } } else { action 2; } 

从文档 :

Java编程语言,如C和C ++以及它们之前的许多编程语言,任意地规定else子句属于它可能属于的最内层。

块1是正确的,如果没有括号的情况下,else链接到最近的if

 if (condition 1) if (condition 2) action 1; else action 2; 

是相同的

 if (condition 1) if (condition 2) action 1; else action 2; 

括号也是为了理解水平和轻松。 在较大的if else语句中,没有括号会使错误非常常见

您可以尝试并发现else适用于内部if

http://ideone.com/iBorYi

这是不写这样的代码的好理由。 阅读和理解正在发生的事情非常困难。