没有大括号的if子句的奇数编译器错误

Dis*_*oat 5 java compiler-construction curly-braces

以下Java代码抛出了编译器错误:

if ( checkGameTitle(currGame) )
    ArrayList<String> items = parseColumns( tRows.get(rowOffset+1), currGame, time, method );
Run Code Online (Sandbox Code Playgroud)

checkGameTitle是一个公共静态函数,返回一个布尔值.错误都是"无法找到符号"类型,符号为 variable ArrayList,variable Stringvariable items.

但是,如果我添加{花括号},那么代码编译时没有错误.为什么会这样?if没有它们的条款是否存在歧义?

Chr*_*her 11

如果此时声明一个变量items,则无法从任何地方访问它.因此,允许这种结构是没有意义的.

OTOH,当你打开一个街区时,做同样的事情仍然没有意义(起初).但是可以预料到,你以后会想要延长块,并且最终会有意义.

  • +1 - Java的语法防止编程错误.请参阅:http://java.sun.com/docs/books/jls/second_edition/html/syntax.doc.html这突出了像Java这样定义良好的语法的重要性. (5认同)