java 8 新功能详解_Java 8的8个新功能

java 8 新功能详解

注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide 。

Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经公开发售,开发人员可以从早期版本转换为经过测试的版本以用于生产。 但是对于繁忙的Java开发人员来说,这对您意味着什么? 好吧,我总结了一些要标记此版本的要点:

1.Lamda表达式

我从lambda表达式开始,因为它可能是Java 5中的Generics / Annotations之后的语言中最受欢迎的功能。

语法如下:

(argtype arg...) -> { return some expression.. probably using these arguments }

它的作用是在明显的地方(例如在匿名内部类中)减少代码。 (摇摆动作处理程序变得很性感,是的!)

因此,线程可以更改为:

Runnable oldRunner = new Runnable(){public void run(){System.out.println("I am running");}
};
Runnable java8Runner = () ->{System.out.println("I am running");
};

与Scala相似,Lambdas中也可以进行类型推断。 考虑以下可用示例:

Comparator c = (a, b) -> Integer.compare(a.length(), b.length());

在此,随着比较方法的实现,可以推断出a,b的类型(在这种情况下为String,来自Comparator接口)。

用于将块与参数分开的符号->与Scala中已经使用的=>十分相似,如果您擅长使用该符号,则没有太多理由进行切换,因为您会感觉到Java中实现lambda的方式是不够的(和冗长),但是对于一个优秀的'ol Java程序员来说,这是要走的路。

2.通用类型的更改和改进

从Lambdas获得线索后,通用集合还可以推断要使用的数据类型。 例如,使用通用集合的方法无需指定通用类型。 因此,以下方法

SomeClass.method();

可以简单地忽略类型信息而调用:

SomeClass.method();

可以通过方法签名来推断类型,这对于嵌套调用(如

myCollection.sort().removeUseless().beautify();

3.流集合类型(

流是一个迭代器,它允许对其调用的集合进行单次运行。 与Lambdas一起,这是另一个值得关注的功能。 您可以使用流来执行诸如Filer或对集合进行映射/缩小的功能性操作,这些集合可以使用Stream对象作为单个元素进行流式处理。 流可以根据需要顺序或并行运行。 并行模式利用fork / join框架,可以利用多个内核的功能。

例:

List guys = list.getStream.collect(Collectors.toList())

也可以并行实现为

List guys = list.getStream.parallel().collect(Collectors.toList()

将集合减少为单个项目的另一个不错的示例是调用reduce algorithem。

int sum = numberList.stream().reduce(0, (x, y) -> x+y);

要么,

int sum = numberList.stream().reduce(0, Integer::sum);

4.功能接口(

这些接口包含一些不需要实现的默认方法,可以直接从该接口运行。 这对现有代码有帮助-更改接口不必使实现它的所有类都实现新方法。 这类似于Scala中的Traits,功能接口将与lambda兼容。

5. Nashorn –

这是使我们能够运行javascript以在jvm上运行的javascript引擎。 它类似于运行Node.js的chrome提供的V8引擎。 它与Node.js应用程序兼容,同时还允许服务器上运行的javascript代码调用实际的Java库。 至少可以说这令人兴奋,因为它直接将Node.js的可伸缩性和异步特性与安全且广泛的服务器端Java中间件结合在一起。

6.日期/时间更改(

http://download.java.net/jdk8/docs/api/java/time/package-summary.html

日期/时间API移至java.time包,并遵循Joda时间格式。 另一个好处是,大多数类都是线程安全的并且是不可变的。

7.类型注释

现在,注释可用于装饰通用类型本身。

例如:

List<@Nullable String>

这并非总是希望的,但在某些情况下可以证明是有用的。 除了装饰泛型类型之外,它还可以用于构造函数和强制转换。

new @NonEmpty @Readonly List(myNonEmptyStringSet)
new @Interned MyObject()myString = (@NonNull String) myObject;

甚至可以注释数组对象:

@NotNull String[] arr;

包含RuntimeVisibleTypeAnnotations和RuntimeInvisibleTypeAnnotations属性,这些属性使.class文件保存注释信息。

8.Other –(很高兴)更改

在TypeName,GenericString等的支持下,反射api有所增加。

String.join()方法是一个受欢迎的补充,因为创建了许多自行创建的实用程序类。 所以,下面的例子

String abc= String.join(" ", "Java", "8");

将被评估为“ Java 8”。

在“集合”包中,对Comparator接口进行了改进,并添加了诸如反转,比较和随后的COmparing之类的方法,可轻松自定义多个字段的比较。 诸如Concurrency和NIO之类的其他库也已更新,但值得关注,并且与api中的更改保持一致。

总体而言,Java8被深思熟虑,并且使主流Java变得简明扼要,并选择了Scala / Clojure的一些出色部分来改进其语法并解决人们所寻求的功能。

翻译自: https://www.javacodegeeks.com/2014/03/8-new-features-for-java-8.html

java 8 新功能详解

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

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

相关文章

什么是串口服务器?串口服务器都用在哪些领域?

我们知道串口服务器在实际应用中是很广泛的&#xff0c;那么&#xff0c;你知道什么是串口服务器吗&#xff1f;串口服务器该如何使用呢&#xff1f;今天&#xff0c;就由飞畅科技的小编来为大家详细介绍下什么是串口服务器以及串口服务器怎么使用&#xff1f;一起来看看吧 一…

[渝粤教育] 广东-国家-开放大学 互联网营销概论

1、品牌最基本的含义是品牌代表着特定的&#xff08;&#xff09;。&#xff08;2 分&#xff09; A&#xff0e;消费者类型 B&#xff0e;商品属性 C&#xff0e;利益 D&#xff0e;文化 2、网上竞价模式主要有&#xff08; &#xff09;。&#xff08;2 分&#xff09; A&…

超全超详细AC-DC电源模块测试教程!

一、 AC-DC电源模块典型应用电路 *备注&#xff1a;我司产品内部EMC相关电路&#xff0c;用户无需在外设额外增加器件&#xff0c;应用简单。 二、AC-DC电源模块基本测试方法 基本性能测试 测试仪器-参考&#xff1a;输入电压范围足够大的交流可调稳压电源&#xff0c;电流表A&…

fate服务器维护,活动维护公告(2020年4月1日 14时)

我们将于以下时间&#xff0c;对游戏服务器实施临时维护&#xff0c;在维护期间&#xff0c;将暂时无法进行游戏。因此给各位御主带来不便&#xff0c;敬请谅解。今后也请继续支持「Fate/Grand Order」。【维护时间】2020年4月1日 14:00 &#xff5e; 4月1日 19:00(预计)【维护…

HDMI切换器的各种版本能不能互通?

近几年来&#xff0c;随着高清技术的发展&#xff0c;HDMI渐渐被人们所熟知&#xff0c;受到青睐&#xff0c;许多电子产品都用到了HDMI接口&#xff0c;对于HDMI版本的更新&#xff0c;烨然很多人产生这样的疑问&#xff0c;HDMI切换器的版本能不能互通。接下来我们就跟随飞畅…

【渝粤教育】 广东开放大学21秋期末考试劳动和社会保障法10682k2

1、《集体合同规定》第3条的规定&#xff0c;集体合同是指用人单位与本单位职工根据法律、法规、规章的规定&#xff0c;就劳动报酬、工作时间、休息休假、劳动安全卫生、职业培训、保险福利等事项通过集体协商签订的书&#xff08;&#xff09;。 &#xff08;3 分&#xff09…

AC-DC电源模块怎么选择?有哪些注意事项?

一、AC-DC电源模块产品选型 首先确定电源的规格&#xff0c;根据实际需求的指标进行筛选&#xff0c;确定使用标准电源模块还是非标&#xff0c;非标电源可按需求定制生产。 *备注&#xff1a;选型框架图会随成都亿佰特电子科技有限公司的持续发展并更新 01 、选择输入电压类型…

Java equals()和hashCode()

介绍&#xff1a; Java Object类提供了方法的基本实现– hashCode&#xff08;&#xff09;和equals&#xff08;&#xff09;。 这些方法非常有用&#xff0c;尤其是在使用Collection框架时。 哈希表实现依赖于这些方法来存储和检索数据。 在本教程中&#xff0c;我们将学习h…

基于CSMA -CA协议的无线星型网络的应用案例介绍

1、CSMA/CA特点 在无线网络通信中&#xff0c;一种被称为CSMA/CA的协议解决了上诉数据冲突问题&#xff0c;CSMA&#xff08;Carrier Sense Multiple Access&#xff09;&#xff0c;中文为冲突避免的载波侦听多路访问&#xff0c;具体工作方式为&#xff0c;发送数据前&#x…

4G物联网网关和工业路由器的区别

网关和路由器是数据通信行业被广泛使用的通信设备&#xff0c;它们都是网络连接的组成部分。那么&#xff0c;4G物联网网关和传统工业路由器有哪些区别呢&#xff1f;接下来飞畅科技的小编就来为大家详细介绍下4G物联网网关和工业路由器的区别&#xff0c;一起来看看吧&#xf…

服务器系统日志有哪些centos,CentOS 分析服务器日志命令

# 分析日志文件下 2012-05-04 访问页面最高 的前20个 URL 并排序cataccess.log |grep 04/May/2012| awk {print $11}|sort|uniq -c|sort -nr|head -20# 查询受访问页面的URL地址中 含有 www.abc.com 网址的 IP 地址cataccess_log | awk ($11~/www.abc.com/){print $1}|sort|uni…

基于Modbus RTU协议的开关量控制采集简介

一、什么是开关量控制采集 所谓的开关量控制采集就是通过458/232接口发送控制命令&#xff0c;实现读取开关量输入或者控制开关量输出的通断。 二、开关量输入采集和开关量输出控制 1. 开关量输入采集就是将一个开关信号直接接入到开关量控制采集设备输入端口&#xff0c;而…

【渝粤教育】国家开放大学2018年春季 4992T农村文化建设 参考试题

试卷代号&#xff1a;4992 &#xff08;中央广播电视大学&#xff09;2018年春季学期“开放专科”期末考试 农村文化建设 试题 2018年7月 一、单项选择题&#xff08;每题3分&#xff0c;共30分&#xff09; 1&#xff0e;“观乎天文&#xff0c;以察时变&#xff1b;观乎人文&…

浅谈开关量采集回路的设计及交流干扰问题解决方案

开关量采集回路选用光耦隔离&#xff0c;光耦作为电路之间的信号传输&#xff0c;使前端与负载完全隔离&#xff0c;增加安全性&#xff0c;减少电路干扰。该回路的运行质量直接影响着保护动作的准确性&#xff0c;所以需要采取一些电路的保护措施增加开关量采集回路的安全可靠…

怎么讲服务器上的文件装进电脑,怎么把电脑文件放进云服务器

怎么把电脑文件放进云服务器 内容精选换一换Winscp无法连接到服务器。SSH连接工具例如Xshell可以正常连接云服务器。其他SSH工具连接云服务器正常&#xff0c;但是Winscp无法连接到服务器。说明SSH服务是没有问题的&#xff0c;Winscp连接基于的是SFTP协议。查看/etc/ssh/sshd_…

飞畅 8口RS-485集线器产品性能参数介绍

8口RS-485集线器&#xff0c;具有1路RS-485转8路RS-485功能&#xff0c;DC9~48V供电&#xff0c;DIN导轨安装&#xff0c;在工业自动通信中&#xff0c;可以解决多个距离比较远的R485设备连接。那么&#xff0c;什么是八口RS-485集线器&#xff1f;8口RS-485集线器产品性能参数…

【渝粤教育】国家开放大学2018年春季 7407-21T药物治疗学(本) 参考试题

试卷代号&#xff1a;7407 座位号 2017-2018学年度第二学期期末考试 药物治疗学&#xff08;本&#xff09;试题 2018年5月 一.填空题&#xff08;每空2分&#xff0c;共40分&#xff09; 1.药物进行生物转化的主要器官为___________、催化转化的酶简称______________ 。 2. 胃…

浅谈蓝牙“嗅探”功能设计

BLE&#xff08;Bluetooth Low Energy&#xff09;即低功耗蓝牙技术&#xff0c;通讯双方角色分别配置为 “蓝牙主机”和“蓝牙从机”&#xff0c;通常情况下从机以固定间隔发送“广播”数据包&#xff0c;广播包中可包含物理地址、功率、用户信息等&#xff0c;主机发现广播设…

【渝粤教育】国家开放大学2018年春季 8634-21TAndroid智能手机编程 参考试题

编号&#xff1a;8634 17-18学年第1学期期末考试 Android智能手机编程 试题&#xff08;开卷&#xff09; 一、选择题&#xff1a;&#xff08;每题4分&#xff0c;共40分&#xff09; 1&#xff0e;Android智能手机平台是基于&#xff08; &#xff09;操作系统内核开发而来…

akka2.5_发布Akka Toolkit 2.3

akka2.5最近宣布了Akka工具包 2.3.0版本的发布。 Akka是一个非常有用的工具包和运行时&#xff0c;用于在JVM上构建高度并发&#xff0c;分布式和容错的事件驱动的应用程序。 它是分布式的&#xff0c;并提供了Actor&#xff0c;Future和STM等高级抽象。 它的新版本在2.2.0发布…