亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 9 try-with-resources 改进:Effectively-final 变量直接使用

改进点

Java 7 引入 try-with-resources 要求在 try(...) 括号内声明或赋值资源变量。Java 9 放宽限制:已声明的 effectively-final 变量(仅赋值一次)可直接放入 try 括号,无需重新声明别名。

代码对比

Java 7/8 写法

Reader inputString = new StringReader(message);
BufferedReader br = new BufferedReader(inputString);
try (BufferedReader br1 = br) {  // 必须声明新变量 br1
    return br1.readLine();
}

Java 9+ 写法

Reader inputString = new StringReader(message);
BufferedReader br = new BufferedReader(inputString);
try (br) {  // 直接使用已有 final/effectively-final 变量
    return br.readLine();
}

规则细节

实际价值

完整示例

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 (br) {  // Java 9+ 直接使用 effectively-final 变量
            return br.readLine();
        }
    }
}

输出:test

java

  1. 精通 Java 异常处理:try-catch-finally 与资源管理
  2. Java 面向对象核心概念全解析:抽象、封装、继承、多态与关联关系实战
  3. Java String length() 方法:获取字符串长度(示例)
  4. 精通 Java String.indexOf():定位子字符串与实战示例
  5. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  6. 精通 Java String compareTo():语法、用例与实战示例
  7. Java String.contains() 方法:检查子字符串是否存在(实战示例)
  8. 精通 Java String.endsWith():检查字符串后缀(示例)
  9. Java BufferedReader 读取文件:实战指南与示例
  10. Java 插入排序算法详解:核心原理、完整代码与步骤演示
  11. Java 选择排序详解:核心原理、完整代码与步骤演示
  12. Java 8 进阶学习资源精选:官方文档、书籍与社区推荐