我们都知道,一般在Java中,如果我们打开了某个资源文件(比如文件、Socket、Camera等),在我们不再去使用它的时候,一定得手动关闭它。不然等程序的不断运行,就会造成造成内存泄漏乃至内存溢出OOM。
而我们一般处理这类资源,都会使用try catch finally,一般都会在finally中去关闭这些资源。
但是如果我们同时打开了多个资源,那么就会出现噩梦般的try catch finally疯狂嵌套,甚至会发现处理关闭资源的代码比我们的业务代码多得多得多。
所以Java也发现了这个问题,于是在JDK 1.7的时候,为我们打来了try-with-resource语法糖。
这样的话,我们只需要通过在try语句的括号里面去将资源开启,然后再try代码块中去写我们的代码,然后当执行完毕,跳出try代码块的时候,Java会自动帮我们关闭这些资源。
而如果想实现try-with-resource的话,必须得让我们的资源实现 AutoClosable
接口。然后重写close方法。