-
Java8新特性之lambda表达式
1.1 Java8的概述
- Java8于2014年3月发布,该版本是 Java 语言的一个重要版本,自Java5以来最具革命性的版本,该版本包含语言、编译器、库、工具和JVM等方面的多个新特性。
1.2 函数式接口
- 函数式接口主要指只包含一个抽象方法的接口,如:java.lang.Runnable等。
@FunctionalInterface
public interface Runnable {
/**
* When an object implementing interface {@code Runnable} is used
* to create a thread, starting the thread causes the object's
* {@code run} method to be called in that separately executing
* thread.
* <p>
* The general contract of the method {@code run} is that it may
* take any action whatsoever.
*
* @see java.lang.Thread#run()
*/
public abstract void run();
}
- Java8中提供@FunctionalInterface注解来定义函数式接口,若定义的接口不符合函数式的规范便会报错。
/**
* 自定义函数式接口
*/
@FunctionalInterface
public interface MyFunctionInterface {
/**
* 自定义有且只有一个的抽象方法
*/
void show();
}
- Java8中增加了java.util.function包,该包包含了常用的函数式接口,具体如下:
接口名称 | 方法声明 | 功能介绍 |
---|---|---|
Consumer |
void accept(T t) | 根据指定的参数执行操作 |
Supplier |
T get() | 得到一个返回值 |
Function<T,R> | R apply(T t) | 根据指定的参数执行操作并返回 |
Predicate |
boolean test(T t) | 判断指定的参数是否满足条件 |
1.3 函数式接口的使用方式
1.3.1 自定义类实现函数式接口得到接口类型的引用
/**
* 自定义类实现接口
*/
public class MyFunctionInterfaceImpl implements MyFunctionInterface {
@Override
public void show() {
System.out.println("这里是接口的实现类");
}
}
MyFunctionInterface myFunctionInterface = new MyFunctionInterfaceImpl();
myFunctionInterface.show();
1.3.2 使用匿名内部类的方式得到接口类型的引用
MyFunctionInterface myFunctionInterface = new MyFunctionInterface() {
@Override
public void show() {
System.out.println("匿名内部类的方式");
}
};
myFunctionInterface.show();
1.3.3 使用Lambda表达式得到接口类型的引用
- Lambda 表达式是实例化函数式接口的新方式,允许将函数当做参数进行传递,从而使代码变的更加简洁和紧凑。
- 语法格式:(参数列表) -> { 方法体; }
- 其中()、参数类型、{} 以及return关键字 可以省略。
MyFunctionInterface myFunctionInterface = () -> {
System.out.println("lambda表达式的方式");
};
myFunctionInterface.show();
// 省略{}后的写法
MyFunctionInterface myFunctionInterface = () -> System.out.println("lambda表达式的方式");
myFunctionInterface.show();
出处:https://www.cnblogs.com/gezishan007/p/16896668.html
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式