[JAVA] 10.JAVA中的Lambda
时间:2020-04-28
本文章向大家介绍 [JAVA] 10.JAVA中的Lambda,主要包括 [JAVA] 10.JAVA中的Lambda使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一个接口实现的简单例子:
Printer.java
public interface Printer {
void print(String message);
}
ConsolePrinter.java
public class ConsolePrinter implements Printer {
@Override
public void print(String message) {
System.out.println(message);
}
}
LambdaDemo.java
public class LambdaDemo {
public static void show(){
//通过实例化实现了接口的类
greet(new ConsolePrinter());
}
public static void greet(Printer printer){
printer.print("你好,master。");
}
}
匿名内部类
为了快捷调用greet方法,可以使用匿名内部类来实现这个接口
public static void show(){
//通过内部匿名类实现了接口的类
greet(new Printer() {
@Override
public void print(String message) {
}
});
}
由于这里只有一个需要实现的函数,所以可以使用lambda函数进行替换
public static void show(){
//通过Lambda函数实现了接口的类
greet(message -> {
System.out.println(message);
});
}
在这个lambda表达式中,只调用了一个方法,所以可以使用方法引用
来简化写法:
public static void show(){
//通过引用方法实现了接口的类
greet(System.out::println);
}
函数式接口
这里提到了两种编程模式:imperative program命令式编程,declarative program声明式编程。
public static void main(String[] args) {
List<Integer> list = List.of(1, 2, 3);
//命令式编程
for (var item:list)
System.out.println(item);
//声明式编程
list.forEach(System.out::println);
}
链式消费者
得益于andThen方法,可以传入消费者,并返回消费者,可以支持链式调用。
Customer.andThen(Customer)
四种函数式接口
详见个人总结的Xmind
原文地址:https://www.cnblogs.com/modai/p/12795388.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python、PyGame游戏项目
- windows 认证机制
- 谷歌地球引擎python文档(GEE_python_API)
- react基础
- 基于ASP.NET Core 3.x的端点路由(Endpoint Routing)实现控制器(Controller)和操作(Action)分离的接口服务
- 流量转发映射
- 什么情况用ArrayList or LinkedList呢?
- 拒绝服务攻击
- 协议攻击(一)
- 百亿级图数据JanusGraph迁移之旅
- 协议攻击(二)
- 学不会设计模式,是因为你还没用过这个神奇的网站!
- windows域的创建
- 聊一下简易版的“Spring Boot”写的咋样了
- 手写“SpringBoot”近况:IoC模块已经完成