您不能在那裏聲明一個變量(當前錯誤,來自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