代码对比
✕ Java 8
Map<String, List<Integer>> map =
new HashMap<String, List<Integer>>();
for (Map.Entry<String, List<Integer>> e
: map.entrySet()) {
// verbose type noise
}
✓ Java 10+
var map = new HashMap<String, List<Integer>>();
for (var entry : map.entrySet()) {
// clean and readable
}
发现此代码有问题? 告诉我们。
为什么现代方式更好
减少样板代码
无需在赋值两侧重复复杂的泛型类型。
提高可读性
专注于变量名和值,而非类型声明。
仍然类型安全
编译器在编译时推断并强制执行确切类型。
旧方式
显式类型声明
现代方式
var 关键字
自 JDK
10
难度
入门
JDK 支持
使用 var 进行类型推断
可用
自 JDK 10 起广泛可用(2018 年 3 月)
工作原理
自 Java 10 起,编译器从右侧表达式推断局部变量类型。这在不牺牲类型安全的情况下减少了视觉噪音。当类型从上下文中显而易见时,使用 var。
相关文档