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();}我只是想知道如何解决这个问题。我还在“状态”变量上收到错误“在封闭范围中定义的局部变量状态必须是最终的或有效的最终”。我相信这是因为我正在使用我发现的一些旧源代码,但是,我似乎找不到解决方案。
1 回答
catspeake
TA贡献1111条经验 获得超0个赞
对于 Java,您不能将任何内容分配给在声明中标记为 except 的变量final
。另一方面,您需要将这些变量设为最终变量才能在此闭包中使用。JS之后可能会感到沮丧。因此,您可能需要对这段特定代码执行的操作是将变量声明移至闭包中,并删除final
修饰符。如果您仍然需要从外部访问它们,您可能会定义一个实现Runnable
接口的类,并通过 get 方法使这些变量成为该类实例的字段。
另外,您真的需要这段代码来异步运行吗?
添加回答
举报
0/150
提交
取消