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类,其中包含两个子类SquareCircle ,则使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA for Mac自定义动态代码模板快捷键(Live Templates Shortcut)

文章目录查看更多的快捷键常用的代码模板自定义代码模板快捷键格式化等号文档注释代码模板快捷键应用示例声明定义引用类型变量数组的 for 循环指定循环次数的 for 循环增强 for 循环倒序 for 循环自动生成普通 for 循环语句自动生成main 方法自动生成输出语句自动生成增强for循…

android udp 设备发现,两台Android设备之间进行UDP连接(使用多播地址)~~求大神指点...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼首先 发送端&#xff1a;package com.example.multicastclient;import android.support.v7.app.ActionBarActivity;import java.io.IOException;import java.net.DatagramPacket;import java.net.InetAddress;import java.net.Mult…

java serial_Java的@Serial批注

java serialJDK可能正在使用JDK 11 &#xff1a; Serial获得另一个标准&#xff08;预定义&#xff09;注释 。 JDK-8202385 [“标记与序列相关的字段和方法的注释”]的目的是添加“某种“ SerialRelated”注释&#xff0c;以促进对序列字段和方法的声明的自动检查。” 这种想法…

IntelliJ IDEA 选中变量名,高亮显示其它地方的这个变量名,高亮颜色如何设置呢?

选中了一个变量名&#xff0c;会高亮显示位于别的地方的这个变量名&#xff0c;那么怎么修改其他地方的高亮颜色&#xff1f; 按下 Command , 打开偏好设置窗口&#xff0c;接着看下图&#xff1a;

rest和rest ful_还有更多REST技巧

rest和rest ful在以前的博客文章中&#xff0c;我介绍了一些实现REST体系结构的想法和技巧。 在这篇文章中&#xff0c;我将介绍更多的想法和技巧。 快取 缓存是原始论文的很大一部分。 见5.1.4节 策略包括验证&#xff08; 客户端检查它是否具有最新版本 &#xff09;和过期…

html实心圆点特殊符号,和平精英名称添加圆点符号的方法 和平精英圆点符号代码分享...

和平精英怎么在名字中添加圆点符号呢&#xff1f;昵称中是可以加入圆点符号的&#xff0c;很多小伙伴们都想要一个性一点的名字&#xff0c;那么就可以用到各种各样的特殊符号&#xff0c;圆点符号复制的代码小编已经分享到下面了&#xff0c;有需要这个圆点符号的玩家快带走吧…

Java包装类和基本数据类型的对照

int --> Integer byte --> Byte short --> Short long --> Long boolean --> Boolean char --> Character double --> Double float --> Float 注&#xff1a;基本类型自动转换成对应的包装类型&#xff0c;叫自动装箱&#xff1b;包装类型转换成对应…

java 8 stream_Java 8 Stream示例

java 8 stream这篇文章将帮助您了解Java 8中一些重要且经常使用的Stream操作&#xff0c;这使您使用Java编程变得容易。 让我们以传统示例为例&#xff0c;“员工和部门”。 public class Employee {private String name;private Integer age;private String city;private De…

html怎么设置图片隐藏,css3如何隐藏图片?

css3隐藏图片的方法&#xff1a;1、为图片元素设置display:none;样式来隐藏。2、使用visibility:hidden;样式隐藏图片。3、使用opacity:0;样式通过设置图片完全透明来设置图片不可见。css中可以使用下面几种样式隐藏图片&#xff1a;display:none;visibility:hidden;opacity:0;…

IntelliJ IDEA修改项目的根目录名称_修改包目录的名称_修改模块名称_修改项目名称

文章目录修改项目根目录的名称修改包目录的名称模块重命名修改了项目根目录后&#xff0c;必须删除项目和 .idea 文件&#xff0c;重新导入&#xff08;重点&#xff09;新版本的 IDEA 取消了 Import Project 入口修改项目根目录的名称 如果仅仅修改项目的名称&#xff0c;而不…

容器rocker_用Rocker制作模板

容器rocker在本文中&#xff0c;我们将快速介绍Rocker &#xff0c;这是一个静态类型化的快速Java 8模板引擎。 必需的依赖项 要开始使用Rocker&#xff0c;我们需要在项目中添加以下依赖项&#xff1a; <dependency><groupId>com.fizzed</groupId><art…

android 开源 示波器,上个老外的开源虚拟示波器

这个老贵~&#xff01;Price USD (US Dollar) $ 1595.00Network BitScope 442 ( BS442N )(原文件名:bs445n.png)(原文件名:bs440e.jpg)BS442NBS325NBS325UBS100UBS50UThe correct appearance of this website is only visible in graphical browsers that support web standard…

Java子类的成员方法可以直接调用父类的成员方法和成员变量

public class Teacher extends Employee {public static void main(String[] args) {}public void method() {super.method(); // 可以直接调父类的成员方法super.name; // 访问父类的成员变量System.out.println("子类方法执行&#xff01;");} }我的理解&#xff1…

java类似sizeof_如何用Java编写类似C的Sizeof函数

java类似sizeof如果您刚开始学习Java并且是C语言背景&#xff0c;那么您可能已经注意到Java和C编程语言之间存在一些差异&#xff0c;例如String是Java中的对象&#xff0c;而不是NULL终止的字符数组。 同样&#xff0c;Java中没有sizeof&#xff08;&#xff09;运算符。 所有…

html文件压缩成gzip,前端性能优化成神之路-HTTP压缩开启gzip

什么是HTTP压缩cssHTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法&#xff0c;好比gzip来压缩HTML,Javascript, CSS文件。 能大大减小网络传输的数据量&#xff0c;提升了用户显示网页的速度。固然&#xff0c;同时会增长一点点服…

Java中父类的静态变量和静态方法的继承问题

1.普通父类的静态变量和方法&#xff0c;可以通过子类的名称访问和调用 2.普通父类的静态变量和方法&#xff0c;可以通过子类的实例对象访问和调用 3.抽象父类的静态变量和方法&#xff0c;可以通过具体子类的名称访问和调用 4.抽象父类的静态变量和方法&#xff0c;可以通过具…

jdk10与jdk9的区别_JDK 8与JDK 10:三元/拆箱的区别

jdk10与jdk9的区别最近的Nicolai Parlog &#xff08; nipafx &#xff09; 鸣叫引起了我的注意&#xff0c;因为它引用了一个有趣的StackOverflow讨论 &#xff0c;该讨论涉及JDK 8和JDK 10之间的行为更改&#xff0c;并询问“为什么&#xff1f;” SerCe 在StackOverflow线程…

Java的多态形式中,如何访问成员变量和调用成员方法

文章目录简介演示案例简介 多态&#xff0c;多态使 Java 更有生命和鲜活起来。多态指子类对象可以直接赋值给父类变量&#xff0c;但在运行时依然表现出子类的特征。Java 引用变量有两种类型&#xff0c;分别是编译时类型和运行时类型&#xff0c;编译时类型由声明类型决定&am…

cobol和java_Java正成为COBOL的一部分-它将成为COBOL的一部分吗?

cobol和java任何从大学&#xff0c;技术学校或社区学院毕业的计算机科学专业都接受过培训。 每个身材高大的公司都使用该语言&#xff0c;并拥有一批具备此能力的程序员。 通用语言可以推动业务发展。 1985年是COBOL。今天是Java。 尽管存在差异&#xff0c;但是这两种语言在轨…

android 6.0 dm-verity技术,Android 7.0安全性大幅提升,要求严格强制执行验证启动

在我们针对 Android 7.0 对 dm-verity 所做的更改中&#xff0c;我们使用了一个称为交错的技术&#xff0c;利用该技术&#xff0c;我们不仅可以从丢失的整个 4 KiB 源块恢复数据&#xff0c;还可从多个连续块恢复数据&#xff0c;与此同时&#xff0c;与朴素实现相比&#xff…