- Java 10 教程
- Java 10 - 主页
- Java 10 - 概述
- Java 10 - 环境设置
- Java 10 - 基于时间的发布版本控制
- Java 10 - 局部变量类型推断
- Java 10 - 新 API 和选项
- Java 10 - 删除的功能和选项
- Java 10 - 已弃用的功能和选项
- Java 10 - JIT 编译器
- Java 10 - 类数据共享
- Java 10 - 增强的垃圾收集
- Java 10 - 区域设置增强
- Java 10 - 堆分配
- Java 10 - 统一的 JDK 森林
- Java 10 - 根证书
- Java 10 - 线程本地握手
- Java其他版本教程
- Java教程
- Java 8 教程
- Java 9 教程
- Java 10 有用资源
- Java 10 - 快速指南
- Java 10 - 有用的资源
- Java 10 - 讨论
Java 10 - 局部变量类型推断
JEP 286 - 局部变量类型推断
局部变量类型推断是 Java 10 以来最明显的语言变化之一。它允许使用 var 定义变量而不指定它的类型。编译器使用提供的值推断变量的类型。这种类型推断仅限于局部变量。
声明局部变量的旧方法。
String name = "Welcome to tutorialspoint.com";
声明局部变量的新方法。
var name = "Welcome to tutorialspoint.com";
现在,编译器通过检查提供的值将 name 变量的类型推断为 String。
值得注意的点
成员变量、方法参数、返回值不进行类型推断。
局部变量应在声明时初始化,否则编译器将无法推断并抛出错误。
局部变量推断可在循环语句的初始化块内使用。
没有运行时开销。由于编译器根据提供的值推断类型,因此不会有性能损失。
没有动态类型变化。一旦推断出局部变量的类型,就无法更改。
使用局部变量类型推断可以减少复杂的样板代码。
Map<Integer, String> mapNames = new HashMap<>(); var mapNames1 = new HashMap<Integer, String>();
例子
以下程序展示了 JAVA 10 中局部变量类型推断的使用。
import java.util.List; public class Tester { public static void main(String[] args) { var names = List.of("Julie", "Robert", "Chris", "Joseph"); for (var name : names) { System.out.println(name); } System.out.println(""); for (var i = 0; i < names.size(); i++) { System.out.println(names.get(i)); } } }
输出
它将打印以下输出。
Julie Robert Chris Joseph Julie Robert Chris Joseph