这个问题与In IntelliJ IDEA, how to surround with try-with-resources?类似但不同的是,我有一个字段而不是局部变量。我的代码如下所示:
preparedStatement = connect.prepareStatement(sqlQuery);
preparedStatement.setInt(1, 1);
preparedStatement.setString(2, "foo");
preparedStatement.setString(3, "bar");
preparedStatement.setString(4, "baz");
preparedStatement.setDouble(5, 0);
preparedStatement.setDouble(6, 0);
preparedStatement.setString(7, foovar);
preparedStatement.setString(8, barvar);
preparedStatement.executeUpdate();
preparedStatement = connect.prepareStatement(sqlQuery);
preparedStatement.setInt(1, 1);
preparedStatement.setString(2, "foo2");
preparedStatement.setString(3, "bar2");
preparedStatement.setString(4, "baz2");
preparedStatement.setDouble(5, 0);
preparedStatement.setDouble(6, 0);
preparedStatement.setString(7, foovar2);
preparedStatement.setString(8, barvar2);
preparedStatement.executeUpdate();
我想将其中每一个包装起来,使其看起来像这样::
try (PreparedStatement preparedStatement = connect.prepareStatement(sqlQuery)) {
preparedStatement = connect.prepareStatement(sqlQuery);
preparedStatement.setInt(1, 1);
preparedStatement.setString(2, "foo");
preparedStatement.setString(3, "bar");
preparedStatement.setString(4, "baz");
preparedStatement.setDouble(5, 0);
preparedStatement.setDouble(6, 0);
preparedStatement.setString(7, foovar);
preparedStatement.setString(8, barvar);
preparedStatement.executeUpdate();
}
try (PreparedStatement preparedStatement = connect.prepareStatement(sqlQuery)) {
preparedStatement = connect.prepareStatement(sqlQuery);
preparedStatement.setInt(1, 1);
preparedStatement.setString(2, "foo2");
preparedStatement.setString(3, "bar2");
preparedStatement.setString(4, "baz2");
preparedStatement.setDouble(5, 0);
preparedStatement.setDouble(6, 0);
preparedStatement.setString(7, foovar2);
preparedStatement.setString(8, barvar2);
preparedStatement.executeUpdate();
}
我真的很想仅使用 IDE 重构快捷方式来做到这一点。这可能吗?在我看来,最具挑战性的部分是将这个字段变成局部变量。一旦我完成了这一点,我想我就能弄清楚剩下的事情了。
最佳答案
我认为这是不可能的,因为这种重构可能会对连接的任何其他用户产生不利影响。
鉴于您的连接处于比方法更高的范围,因此有理由认为此连接实例可能有其他下游用户。考虑到这一点,如果存在其他下游用户的可能性,从他们脚下关闭连接将导致意外或异常行为。
IntelliJ 在此声明其代码分析器无法可靠地保证该变量不被任何其他下游使用者使用。您可能希望将此作为一项功能来请求。
我个人喜欢它不允许这种情况发生,因为它可以让开发者免于在他们没有意识到的情况下做一些令人难以置信愚蠢的事情它。
关于java - 如何使用 intellij 将字段重构为 try-with-resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48652919/