为了账号安全,请及时绑定邮箱和手机立即绑定

最终局部变量 dc 无法赋值,因为它是在封闭类型中定义的

最终局部变量 dc 无法赋值,因为它是在封闭类型中定义的

慕尼黑8549860 2023-10-27 10:43:42
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 方法使这些变量成为该类实例的字段。

另外,您真的需要这段代码来异步运行吗?



查看完整回答
反对 回复 2023-10-27
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信