java8-06-lambda 复合使用
复合Lambda 表达式的有用方法
Java8的好几个函数式接口都有为方便而设计的方法。具体而言,许多函数式接口,比如用于传递Lambda表达式的Comparator、Function和Predicate都提供了允许你进行复合的方法。
这是什么意思呢?
在实践中,这意味着你可以把多个简单的Lambda复合成为复杂的表达式。比如,你可以让两个谓词之间做一个or操作,组合成为了一个更大的谓...
2019-02-27 07:48:49 |
Java
java8-05-lambda 方法引用
方法引用
方法引用可以看作仅仅调用特定方法方法的 lambda 的一种快捷的方式。
显示的指定方法的名称,可读性会更好。
代码示例
/**
* 方法引用
*/
@Test
public void functionRefTest() {
Apple one = new Apple(20);
Apple two = new Apple(10);
List<...
2019-02-27 07:48:49 |
Java
java8-04-lambda 类型推断
类型检查
Lambda 的类型是从 Lambda 的上下文推断出来的。
上下文中 Lambda 表达式需要的类型称为 目标类型。
图示如下
同样的 lambda,不同的函数接口
/**
* 相同的 lambda 表达式,但是不同的函数接口
* 只要他们的抽象方法签名可以兼容。
*/
@Test
public void sameLambdaDiffFunctional() {
...
2019-02-27 07:48:49 |
Java
java8-03-lambda 内置函数
Predicate
Predicate 定义了一个 test() 方法,接受泛型 T 的对象,并且返回一个 boolean 值。
定义
/**
* 过滤器: 返回满足条件的列表
* @param list
* @param predicate
* @param <T>
* @return
*/
pr...
2019-02-27 07:48:49 |
Java
java8-02-lambda 入门实战
环绕执行模式
JDK1.7 引入的 TWR 语法,
令读取文件后的资源释放变得更加简洁。
public static String processFile() throws IOException {
try (BufferedReader bufferedReader =
new BufferedReader(new FileReader("1...
2019-02-27 07:48:49 |
Java
java8-01-快速开始
Lambda
Lambda 是 JDK8 中引入的一个很重要的内容,思想值得深入学习。
一、anonymous function
以下为 wiki 的内容
In computer programming, an anonymous function (function literal, lambda abstraction) is a function definition that...
2019-02-27 07:48:49 |
Java
java8-00-新特性概览
JDK 为什么在不断变化?
要么改变,要么衰亡。
Java8 为开发者提供更多的工具和概念。
更快、更简洁、更易于维护的处理编程问题。
主要变化
方法作为一等公民
Scala、Groovy 等语言已经实践证明。
让方法作为一等值,可以扩充程序员的工具库,让编程变得简单。
lambda作为一等公民
Java8 还体现了更广义的将函数作为值得思想,将 lambd...
2019-02-27 07:48:49 |
Java
JDK19 新特性详解,2022-09-20发布GA版本
jdk19
JDK19于2022-09-20发布GA版本,本文将会详细介绍JDK19新特性的使用。
JDK 19:https://openjdk.org/projects/jdk/19
新特性列表
新特性列表如下:
JPE-405:Record模式(预览功能)
JPE-422:JDK移植到Linux/RISC-V
JPE-424:外部函数和内存API(预览功能)
JPE-425:虚...
2019-02-27 07:48:49 |
Java