JAVA9 AutoCloseable接口的自动关闭

https://github.com/singgel?tab=repositories

面向对象的编程语言本来就是很简单的,让人容易理解,最近在看java9新特性的时候看到了try-with-resources 。

try-with-resources 声明在 JDK 9 已得到改进。如果你已经有一个资源是 final 或等效于 final 变量,您可以在 try-with-resources 语句中使用该变量,而无需在 try-with-resources 语句中声明一个新变量。

此前在C#中使用的是using(){} ,主要是来处理数据库连接之后的关闭,防止数据库服务器的连接过多,connection不关闭可是非常占用内存的。以往是要在finally里面写:conn.close();

using (MySqlConnection conn = new MySqlConnection(connectionString))
{
   PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
   int val = cmd.ExecuteNonQuery();
   cmd.Parameters.Clear();
   return val;
}

而在JAVA9的新特性里面,我看到,它使用try来代替using这个关键字,try里面的变量就是要进行处理的变量,使用完毕之后,编译器会自动的调用close方法或者dispose方法将其释放掉,使用者不必担心代码的安全性,避免疏忽大意导致的程序的BUG产生.以往是要在finally里面写:br.close();,不然就会报IOException

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
 
public class Tester {
   public static void main(String[] args) throws IOException {
      System.out.println(readData("test"));
   } 
   static String readData(String message) throws IOException {
      Reader inputString = new StringReader(message);
      BufferedReader br = new BufferedReader(inputString);
      try (BufferedReader br1 = br) {
         return br1.readLine();
      }
   }
}

猜你喜欢

转载自blog.csdn.net/singgel/article/details/81101226