[英]The final local variable cannot be assigned, since it is defined in an enclosing type
[英]The final local variable dc cannot be assigned, since it is defined in an enclosing type
public static void createTable() {
final DatabaseConnection dc;
final Connection con;
final String que;
Statement state;
new Thread(() -> {
dc = new DatabaseConnection("check_table_exists");
con = dc.con;
que = "CREATE TABLE IF NOT EXISTS " + DatabaseConnection.TABLE + " (id INT(11) NOT NULL AUTO_INCREMENT,itemId INT(200), itemName VARCHAR(200), amount INT(200),uuid VARCHAR(200), timestamp BIGINT(200), PRIMARY KEY (id))";
try {
state = con.createStatement();
state.execute(que);
state.close();
dc.close();
}
catch (SQLException e) {
e.printStackTrace();
dc.close();
}
}).start();
}
我只是想知道如何解決這個問題。 我還在“狀態”變量上收到錯誤“在封閉 scope 中定義的局部變量 state 必須是最終或有效最終”。 我相信這是因為我使用了一些我找到的舊源代碼,但是,我似乎找不到解決方案。
使用 Java,您不能將任何內容分配給標記為final
的變量,除非在聲明中。 另一方面,您需要這些變量是最終的才能在此閉包中使用。 這在 JS 之后可能會讓人感到沮喪。 因此,您可能需要對這段特定代碼做的是將變量聲明移動到閉包中,刪除final
修飾符。 如果您仍然需要從外部訪問它們,您可能會定義一個實現Runnable
接口的 class,並通過 get 方法使這些變量成為此 class 實例的字段。
另外,你真的需要這段代碼異步運行嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.