java closable_java-使用AutoCloseable关闭多个资源(try-with-resources)

除了上述答案之外,这是Java 9中的新增功能。

Java 9 try-with-resources改进了编写代码的方式。 现在您可以在try块外声明变量并直接在try块内使用它们,因此您将获得以下好处。

只需在try块中添加它们,就可以通过自动资源管理自动关闭在try(实际上是final或final)外部声明的资源。您不需要重新引用在try块外部声明的对象,也不需要像我们在Java 7中那样手动关闭它们。

它还有助于编写简洁的代码。

try-with-resource我们可以在Java 9中这样写吗

public void loadDataFromDB() throws SQLException {

Connection dbCon = DriverManager.getConnection("url", "user", "password");

try (dbCon; ResultSet rs = dbCon.createStatement().executeQuery("select * from emp")) {

while (rs.next()) {

System.out.println("In loadDataFromDB() =====>>>>>>>>>>>> " + rs.getString(1));

}

} catch (SQLException e) {

System.out.println("Exception occurs while reading the data from DB ->" + e.getMessage());

}

}

在这里,自动资源管理将自动关闭两个对象dbCon和rs。

为了更好地理解上面定义的用例列表,请找到一些Java 7代码。

范例1:

public void loadDataFromDB() throws SQLException {

Connection dbCon = DriverManager.getConnection("url", "user", "password");

try (ResultSet rs = dbCon.createStatement().executeQuery("select * from emp")) {

while (rs.next()) {

System.out.println("In loadDataFromDB() =====>>>>>>>>>>>> " + rs.getString(1));

}

} catch (SQLException e) {

System.out.println("Exception occurs while reading the data from DB ->" + e.getMessage());

} finally {

if (null != dbCon)

dbCon.close();

}

}

范例2:

// BufferedReader is declared outside try() block

BufferedReader br = new BufferedReader(new FileReader("C://readfile/input.txt"));

try (BufferedReader inBr = br) {

// ...

}

} catch (IOException e) {

// ...

}

在上面的示例中,您可以查看对象是否被驱除,然后尝试手动关闭或重新引用它。 同样,在try块中有多个对象的情况下,看起来也很凌乱,即使您在try内声明了,也无法在try块外使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值