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

Java 10 局部变量类型推断:var 关键字深度解析

JEP 286:局部变量类型推断

Java 10 引入 var 关键字,允许在声明局部变量时省略显式类型,由编译器根据初始化表达式推断类型。这是 Java 向类型推断迈出的重要一步,显著减少样板代码。

语法对比

// 旧写法
String name = "Welcome to tutorialspoint.com";
List<String> list = new ArrayList<>();
Map<Integer, String> map = new HashMap<>();

// 新写法(Java 10+)
var name = "Welcome to tutorialspoint.com";        // 推断为 String
var list = new ArrayList<String>();                // 推断为 ArrayList<String>
var map = new HashMap<Integer, String>();          // 推断为 HashMap<Integer, String>

核心限制与规则

典型应用场景

1. 简化复杂泛型声明

// 旧
Map<String, List<Map<Integer, String>>> complexMap = new HashMap<>();
// 新
var complexMap = new HashMap<String, List<Map<Integer, String>>>();

2. 流式 API 链式调用中间变量

var filtered = list.stream()
    .filter(s -> s.length() > 3)
    .map(String::toUpperCase)
    .collect(Collectors.toList());  // 类型自动推断为 List<String>

3. try-with-resources 资源变量

try (var input = new FileInputStream("data.txt");
     var reader = new BufferedReader(new InputStreamReader(input))) {
    // ...
}

完整示例

import java.util.List;

public class Tester {
    public static void main(String[] args) {
        var names = List.of("Julie", "Robert", "Chris", "Joseph");

        // 增强 for 循环
        for (var name : names) {
            System.out.println(name);
        }
        System.out.println();

        // 传统 for 循环
        for (var i = 0; i < names.size(); i++) {
            System.out.println(names.get(i));
        }
    }
}

输出:

Julie
Robert
Chris
Joseph

Julie
Robert
Chris
Joseph

最佳实践建议

java

  1. Java 基本数据类型:8 大类型完整指南与示例
  2. 精通 Java 运算符:类型、语法与实战示例
  3. Java 注释:类型、用法与最佳实践
  4. 精通 Java 增强 for 循环:语法、示例与最佳实践
  5. 精通 Java 字符串:创建、方法与最佳实践
  6. 精通 Java 接口:概念、实现与最佳实践
  7. 精通 Java Try-With-Resources:自动资源管理详解
  8. Java 注解详解:类型、放置位置与实战示例
  9. 掌握 Java 类型转换:从自动拓宽到强制收窄及更多
  10. Java static 详解:静态变量、方法、代码块与实战示例
  11. Java 基本数据类型:清晰指南
  12. 理解 Java 变量类型:综合指南