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的图表
XStream使用文档
WebService发布过程及常见问题
webpack实战入门进阶调优分享
weblogic调优参数及监控指标
weblogic节点管理
weblogic管理控制台概述
weblogic-部署和启动
WebLogic-Server-性能及调优-调优-Java-虚拟机
Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。
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