您不能在那里声明一个变量(当前错误,来自Java 8,是error: variable declaration not allowed here
)。如果你仔细想想,这是有道理的:你还没有创建一个新的范围(但是使用一个块),但是你正在创建一个情况,有时在当前范围内,将会有一个statement
变量,其他时间惯于。例如:
if (condition)
Statement statement = con.createStatement();
// Does `statement` exist here? What would Schrodinger say?
如果使用块,它会说明问题:变量存在,但仅在块内。
if (condition) {
Statement statement = con.createStatement();
// `statement` exists here
}
// `statement` does not exist here
如果你想statement
在当前范围存在,你有你的声明,从您的初始化分开:
Statement statement;
if (condition)
statement = con.createStatement();
但后来你遇到了问题,那statement
可能不会一直初始化。为了避免这种情况,你有两个选择:
Statement statement;
if (condition)
statement = con.createStatement();
else
statement = null;
或
Statement statement = condition ? con.createStatement() : null;
当然还是,只是使用块只在它使用statement
。 FWIW —这完全取决于你 —我(和许多风格指南)推荐总是使用块,因为不这样做可以引入维护问题,当你需要(不可避免!)添加第二个语句到在if
...
你能发布一个完整的范例吗? – Jens 2014-09-06 08:15:32
这与'statement'的'scope'有关!请张贴相关代码来澄清更多,缩短代码不会帮助我们! – 2014-09-06 08:16:18
是的,我确定添加大括号可以解决问题,是的,我已经导入了所需的类。 完整的例子: 'if(!(con == null)) Statement statement = con。createStatement();' 给出一个错误while: 'if(!(con == null)){ Statement statement = con.createStatement(); \t }' Works fine – Mickey695 2014-09-06 08:17:47