由于许多地方都需要涉及关流,可以使用关流新方式,但是大部分情况下我们不能在try()中声明变量,因为作用域过小。所以需要手动关流,有时候要关的流很多,导致在finally里写很多个,其实大部分需要关闭的流已经实现了AutoClouseable接口,在多态情况下会执行子类的方法。可以使用可变参数来写一个工具类:
public class CloseUtil {
public static void close(AutoCloseable ...autoCloseable) {
if (autoCloseable == null) {
return;
}
for (AutoCloseable a : autoCloseable) {
if (a != null) {
try {
a.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
只需要在finally调用并传入需要的流即可: