Java8教程

c#小王子 c#小王子 2021-12-09 698 Java


Java8教程


Lambda 表达式

编写 lambda 表达式的规则

Java8 - 介绍

- 6 -

本文档使用 书栈网 · BookStack.CN 构建Functional Interface 也被称为单一抽象方法的接口(SAM接口)。就像它的名字一样, 它 只能有一个抽象方法 。在 Java8 种引入了一个注解 @FunctionalInterface , 当你在某个接口使用了该注解,接口违反了函数式接口的规定时,会产生编译报错。


一个函数式接口的示例:


1. @FunctionalInterface 
2. public interface MyFirstFunctionalInterface { 
3. public void firstWork(); 
4. } 


请注意,即使省略 @FunctionalInterface 注解,函数式接口也是有效的。它仅用于通知编译器 在接口内强制定义单个抽象方法。

此外,由于默认方法不是抽象的,您可以随意添加默认方法到你的接口中,只要你喜欢。 另一个要记住的要点是,如果一个接口中定义的函数是重写了 Object 类的方法, 那么这个方法不会被计入接口的抽象方法,因为接口的任何实现类都会继承自 Object

例如,下面是完全有效的函数式接口。


1. @FunctionalInterface

2. public interface MyFirstFunctionalInterface{

3.

4. public void firstWork();

5.

6. @Override

7. public String toString(); //重写toString

8.

9. @Override

10. public boolean equals(Object obj); //重写equals

11. }

阅读更多:函数式接口

Java8 允许你在接口中添加非抽象方法。这些方法必须被声明为 默认方法。java8中引入了默认方法 函数式接口(Functional Interface)


默认方法(Default Methods)

Java8 - 介绍

- 7 -

本文档使用 书栈网 · BookStack.CN 构建来启用 lambda 表达式的功能。

默认方法可以让你在接口中添加新功能,并确保与旧版本的这些接口编写的代码的二进制兼容。

我们以一个例子来理解:

1. public interface Moveable {

2. default void move(){

3. System.out.println("I am moving");

4. }

5. }

Moveable 接口定义了一个方法 move 并且提供了默认实现。如果任何类实现了这个接口,

那么它可以不实现 move 方法。子类可以直接调用 move 方法,例如:

1. public class Animal implements Moveable{

2. public static void main(String[] args){

3. Animal tiger = new Animal();

4. tiger.move();

5. }

6. }

7.

8. 输出: I am moving

如果子类愿意定制 move 方法的行为,那么它可以提供它自己的自定义实现并覆盖该方法。

阅读更多:默认方法

另一个重大变化是引入了 Streams API,它提供了一种可以用各种方式处理一组数据的机制,包括过 滤、转换或任何其他可能对应用程序有用的方式。

Java8中的 Streams API 支持不同类型的迭代,你只需定义要处理的项目集合,对每个项目执行的 操作以及要存储操作后的输出。

下面是一个 Stream API 的例子。在这个示例中, items String 值的集合,你需要筛 选出一些不是 prefix 开头的项目。

1. List<String> items;

2. String prefix = "base";

3. List<String> filteredList = items.stream()

Streams

Java8 - 介绍

- 8 -

本文档使用 书栈网 · BookStack.CN 构建4. .filter(e -> (!e.startsWith(prefix)))

5. .collect(Collectors.toList());

这里的 items.stream() 表示我们希望使用 Streams API 处理集合中的数据。

阅读更多:内部迭代 VS 外部迭代

新的日期和时间API(JSR-310)也称为ThreeTen,它们简单地改变了在java应用程序中处理日期的 方式。

Date 类甚至已经过时了。用于替换 Date 类的新类是 LocalDate LocalTime

LocalDateTime

1. LocalDate 表示没有时区的日期

2. LocalTime 表示没有时区的时间

3. LocalDateTime 表示没有时区的日期时间

如果要使用带有时区信息的日期功能,Java8为您提供了类似于上述的3个类,

OffsetDate OffsetTime OffsetDateTime

时区偏移可以用 05:30 Europe/Paris 格式表示。

这是通过使用另一个类 ZoneId 来完成的。

为了表示任何时刻的具体时间戳,需要使用的类是 Instant

Instant 类代表一个即时的时间精度为纳秒。即时操作包括与另一个时间的比较,添加或减去一个

周期的时间。

1. Instant instant = Instant.now();

2. Instant instant1 = instant.plus(Duration.ofMillis(5000));

3. Instant instant2 = instant.minus(Duration.ofMillis(5000));

4. Instant instant3 = instant.minusSeconds(10);

Duration 类是Java语言中首次引入的概念。它用来代表两个时间戳之间的时差。

1. Duration duration = Duration.ofMillis(5000);

2. duration = Duration.ofSeconds(60);

时间日期API的改变

日期相关

时间戳和周期

Java8 - 介绍

- 9 -

本文档使用 书栈网 · BookStack.CN 构建3. duration = Duration.ofMinutes(10);

Duration 一般处理小的时间单位,如毫秒,秒,分钟和小时。它们在程序代码中的交互更多一

些。

要与人交互,你需要操作 更长的时间,这些更长的时间在 Period 类中可以体现。

1. Period period = Period.ofDays(6);

2. period = Period.ofMonths(6);

3. period = Period.between(LocalDate.now(), LocalDate.now().plusDays(60));



【下载地址】

百度网盘链接:https://pan.baidu.com/s/19jwMRw9t8-KZGUC35pQSog

提取码:9428


相关文章


使用-JFreeChart来创建基于web的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。


文章热度: 166291
文章数量: 333
推荐阅读

FlashFXP绿色版网盘下载,附激活教程 1781

FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具

Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1565

firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ

navicat for mysql中文绿色版网盘下载 1623

Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq

火车头采集器(旗舰版)绿色版网盘下载 1707

火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA

Photoshop(CS-2015-2023)绿色中文版软件下载 1823

安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之