java12关键字var_Java 10:“ var”关键字
java12关键字var
Java 10使用关键字var
引入了局部变量类型推断 。 这意味着无需编写:
Map<Department, List<Employee>> map = new HashMap<>();
// ...
for (Entry<Department, List<Employee>> dept : map.entrySet()) {List<Employee> employees = dept.getValue();// ...
}
您可以使用var
减少样板,如下所示:
var map = new HashMap<Department, Employee>();
// ...
for (var dept : map.entrySet()) {var employees = dept.getValue();// ...
}
var
消除了在代码中编写显式类型的需要。 这不仅减少了重复,而且还使您的代码更易于维护,因为例如,如果您决定将来更改存储在地图中的对象的类型,则只需要更改一行代码即可。
多态性:
现在让我们看一下var
在多态代码中的行为。 例如,如果您有一个Shape
类,其中包含两个子类Square
和Circle
,则使用var v = new Circle()
会推断出什么类型? 让我们在JShell中尝试一下:
jshell> var v = new Circle();
v ==> Circle@4e9ba398jshell> v.getClass();
$13 ==> class Circlejshell> v = new Square();
| Error:
| incompatible types: Square cannot be converted to Circle
| v = new Square();
| ^----------^
如上所示, v
属于Circle
类型,如果您尝试将其重新分配给Square
,则编译器将引发错误。
匿名类:
使用var
可以做的令人兴奋的事情之一就是创建匿名类并引用其中的字段! 例如:
var person = new Object() {String name = "Joe";int age = 10;
};
System.out.println(person.name + ":" + person.age);
var
推断出匿名类的类型,这意味着您可以将匿名类用作中间值的“持有人”,而无需创建和维护新类。 这是另一个示例,显示了如何创建“临时”人对象:
var persons = Stream.of("Alice", "Bob", "Charles").map(s -> new Object() {String name = s;int age = 10;}).collect(toList());
persons.forEach(p -> System.out.println(p.name));
其他注意事项:
如果没有显式初始化(分配为null
)或在lambda表达式中,则无法使用var
:
jshell> var v;
| Error:
| cannot infer type for local variable v
| (cannot use 'var' on variable without initializer)
| var v;
| ^----^jshell> var v = null;
| Error:
| cannot infer type for local variable v
| (variable initializer is 'null')
| var v = null;
| ^-----------^jshell> var v = () -> {}
| Error:
| cannot infer type for local variable v
| (lambda expression needs an explicit target-type)
| var v = () -> {};
| ^---------------^
翻译自: https://www.javacodegeeks.com/2018/05/java-10-the-var-keyword.html
java12关键字var
java12关键字var_Java 10:“ var”关键字相关推荐
- Java 10 var关键字详解和示例教程
\ 关键要点 \\ Java 10引入了一个闪亮的新功能:局部变量类型推断.对于局部变量,现在可以使用特殊的保留类型名称"var"代替实际类型.\\t 提供这个特性是为了增强Jav ...
- 使用 var 关键字在 Java 中使用动态类型
在本文中,我们将讨论 Java 10 的一项很酷的特性--在 Java 中引入 var 关键字 . 扫码关注<Java学研大本营>,加入读者群,分享更多精彩 Java 获得了 var 关键 ...
- Java 10:“ var”关键字
Java 10使用关键字var引入了局部变量类型推断 . 这意味着无需编写: Map<Department, List<Employee>> map = new HashMap ...
- C# 中的var关键字
C# 中的var关键字 var 是3.5新出的一个定义变量的类型 其实也就是弱化类型的定义 VAR可代替任何类型 编译器会根据上下文来判断你到底是想用什么类型的 至于什么情况下用到VAR 我想就是你无 ...
- var是java关键字,Java 中的 var 关键字及代码示例
本文将介绍是 Java 中的 var 关键字以及如何使用它. 从 Java 10(JDK 10)开始,var 关键字已添加到 Java 语言中,支持局部变量类型推断,在该功能中,Java 编译器可根据 ...
- java10 var关键字浅析
2018年3月20日,Oracle发布java10.java10为java带来了很多新特性,其中让人眼前一亮的便是var关键字的引入. 从今以后我们可以这样写java代码了. public class ...
- 什么时候用var关键字
C#关键字是伴随这.NET 3.5以后,伴随着匿名函数.LINQ而来, 由编译器帮我们推断具体的类型.总体来说,当一个变量是局部变量(不包括类级别的变量),并且在声明的时候初始化,是使用var关键字的 ...
- JavaScript中var关键字的使用详解
作用声明作用:如声明个变量. 语法 ? 1 var c = 1; 省略var在javascript中,若省略var关键字而直接赋值,那么这个变量为全局变量,哪怕是在function里定义的. ? 1 ...
- 深入理解C#中var关键字的用法
文章目录 一.C# 中的var关键字 二.使用var定义变量的特点 三.示例讲解 一.C# 中的var关键字 var是3.5新出的一个定义变量的类型,其实也就是弱化类型的定义,var可代替任何类型,编 ...
最新文章
- 改变Eclipse主题颜色
- Java中switch语句支持的类型
- 中国生物燃料市场产能预测与十四五战略前景展望报告2022年
- 无外网环境下CentOS 7安装MySQL 5.7.18
- wxPython控件学习之TextCtrl(二)多行及样式文本框
- 基于IC设计的实用ISP介绍
- 校园网 显示ldap服务器连接不上,客户端无法连接到LDAP服务器
- Android Timer和TimerTask解决IllegalStateException:Task already scheduled or cancelled
- SPRING IN ACTION 第4版笔记-第八章Advanced Spring MVC-003-Pizza例子的基本流程
- 抖音壁纸小程序源码最新版,支持达人入驻和多端发布
- 如何立即尝试macOS High Sierra Beta
- 如何包装你的实验结果
- useReducer
- logrotate - rotates, compresses, and mails system logs
- java连接打印机打印PDF
- 5分钟通俗易懂了解什么是云存储
- 基于python的验证码自动识别系统设计与实现
- 中国数据科学家年薪有多少?
- lvds传输距离标准_信号链基础知识(第 37 部分):LVDS——低压差分信号传输
- 全国计算机考试cad,国家CAD考试CAD试题库.pdf
热门文章
- 新汉诺塔(洛谷P1242)含第11个数据的解决办法
- CF932G-Palindrome Partition【PAM】
- ssl2348-连接格点【图论,最小生成树,并查集】
- 字符串(AC自动机(fail tree))
- CF449B Jzzhu and Cities(Dijkstra)
- P2468 [SDOI2010]粟粟的书架 动态规划,主席树,二分答案
- Div1 小A抓小B tarjan双连通分量缩点+dfs
- 汇编语言(七)之字符串转大写
- 两年摸爬滚打 Spring Boot,总结了这 16 条最佳实践
- CGLIB 实现代理对象API