在Java 9中的try-with-resources中有效的最终变量?

Try with Resource语句中使用的任何变量都需要在Try语句中声明,直到Java 8版本。从Java 9开始,此限制已删除,并且在Try块内使用了任何最终有效的最终变量实际上,final表示变量一旦初始化就无法更改。

示例

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class EffectivelyFinalTest {
   private static File file = new File("try_resources.txt");
      public static void main(String args[]) throws IOException {
      file.createNewFile();
      BufferedReader bufferedReader = new BufferedReader(new FileReader(file));      try(bufferedReader) {
         System.out.println("可以在尝试资源时使用最终或有效最终!");
      } finally {
         System.out.println("In finally block");
      }
}
}

输出结果

可以在尝试资源时使用最终或有效最终!
In finally block