今天在看JSON 工具jakson的某段源码的时候,从ObjectMapper.readTree()的方法体里看到了try(){}形式的语法,以前没见过,故查了资料记录一番。
该语法的作用:
try块退出时,自动关闭括号里声明的资源,不再需要在finally里手动关闭资源,这与Python的with关键字异曲同工。
括号里资源对象的要求:
实现了java.lang.AutoCloseable或者java.io.Closeable接口。
try()括号里可以声明多个资源对象,形如:
try(
InputStream is = new FileInputStream("...");
OutputStream os = new FileOutputStream("...");
){
//...
}catch (IOException e) {
//...
}
总结:
1.该语法的出现,简化了对于try语句块中必须要关闭的资源的写法,不需要再在finally块内显示关闭,但try()括号内的资源需要符合其要求(实现了java.lang.AutoCloseable或者java.io.Closeable接口)
2.Java的语法越来越追求简洁,如此try语句以及函数式编程等方向的局部改动,希望后面越来越好用