Java 8 中 Function 接口使用方法介绍
作者:??sparkchan???? 发布时间:2022-12-08 23:54:39
标签:Java,Function,接口,用法
Java 8 中 Function 接口的介绍
Java 8 中提供了一个函数式接口 Function
,这个接口表示对一个参数做一些操作然后返回操作之后的值。这个接口的有一个抽象方法 apply
,这个方法就是表明对参数做的操作。
// Java Function 接口的定义
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
Objects.requireNonNull(before);
return (V v) -> apply(before.apply(v));
}
default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
Objects.requireNonNull(after);
return (T t) -> after.apply(apply(t));
}
static <T> Function<T, T> identity() {
return t -> t;
}
Function 接口的用法
apply
方法的使用方式如下:
Function<Integer, Integer> add = p -> p + 10;
Integer result = add.apply(10);
// 这里会输出 20,因为这个函数定义的操作时把参数加上 10 后返回
System.out.println(result);
compose
方法的参数也是一个Function
对象。在 A 这个Function
上调用compose
方法时传入 B 这个Function
对象,然后得到一个新的Function
对象 C。C 这个Function
对象的实现逻辑是先带哦用 B 的apply
方法对参数进行操作,将得到的结果再作为参数传递给 A 这个Function
对象的apply
法,然后返回执行后的结果。
addThen
方法也是类似的原理,只不过内部执行方法的顺序不一样而已。
Function<Integer, Integer> multiplyTen = a -> a * 10;
Function<Integer, Integer> addTen = a -> a + 10;
// 先增加 10,然后再乘 10,输出结果 110
Function<Integer, Integer> addTenThenMultiplyTen = multiplyTen.compose(addTen);
System.out.println(addTenThenMultiplyTen.apply(1));
// 先乘 10,然后再加 10,输出结果 20
Function<Integer, Integer> multiplyTenAddTenThen = multiplyTen.andThen(addTen);
System.out.println(multiplyTenAddTenThen.apply(1));
Function 接口的实例
public class CheckUtils {
private static final Function<String, String> lengthCheck = params -> {
if (params.length() > 100) {
throw new RuntimeException("Length exceed max limit.");
}
return params;
};
private static final Function<String, String> invalidCharacterCheck = str -> {
if (!str.matches("^[a-f,A-F]$")) {
throw new RuntimeException("Contains invalid character.");
}
return str;
};
/**
* 这里的公共方法组合了该类中的基本校验逻辑构成一个复合的逻辑
*/
public static void checkStringLengthAndPhoneNumber(String string) {
invalidCharacterCheck.compose(lengthCheck).apply(string);
}
}
来源:https://juejin.cn/post/7051109293889683464


猜你喜欢
- 使用JPA CriteriaQuery查询的注意事项1.pojo类@Entity@Table(name = "report_wor
- 本文作者:Spring_ZYL文章来源:https://blog.csdn.net/gozhuyinglong版权声明:本文版权归作者所有,
- Android 校验email是否合法这个其实跟JAVA中是一样的。例子: String regEx = "^(([
- 众所周知Web服务器与客户端之间的通信是使用HTTP协议的。HTTP是一个客户端和服务器端请求和应答的标准(TCP)。因为HTTP协议是基于
- 简介网上对于 Camera2 的介绍有很多,在 Github 上也有很多关于 Camera2 的封装库,但是对于那些库,封装性太强,有时候我
- 这篇文章主要介绍了如何使用HttpClient发送java对象到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 目录1、this代表了()的对象引用,super表示的是当前对象的()对象?2、输出内容是:3、下面程序的输出是:()4、执行下列代码的输出
- 1、新建一个Activity,并把各个生命周期打印出来 2、运行Activity,得到如下信息 onCreate--> onStart
- 本文实例讲述了Android编程之短信 * 实现方法。分享给大家供大家参考,具体如下:服务器:1、修改frombean:VideoForm中
- 启动Activity并传递参数Extra正常情况下启动Activity并且传递参数的代码:Intent intent = new Inten
- 前言:项目中经常会用到类似于QQ侧滑点击删除的效果,网上的开源库也很多。个人感觉SwipeLayout最好用。下面介绍怎么使用。一、首先导入
- Maven 的生命周期maven 将项目的生命周期(Lifecycle)抽象为了三种,每种生命周期中又包含了多个阶段(Phase)。也就是说
- 本文实例讲述了Java Web项目部署在Tomcat运行出错与解决方法。分享给大家供大家参考,具体如下:1、在部署Java Web项目的过程
- java加载properties文件的六种方法总结java加载properties文件的六中基本方式实现java加载properties文件
- Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样
- C#使用GET、POST请求获取结果,这里以一个简单的用户登陆为例。1、 使用GET请求获取结果1.1 创建LoginHandler.asp
- RequestBody注解的List参数传递Controller方法参数:@RequestBody List<Long> ids
- 本文实例讲述了C#不重复输出一个数组中所有元素的方法。分享给大家供大家参考。具体如下:1.算法描述0)输入合法性校验1)建立临时数组:与原数
- 有关android的弹窗界面相信大家见过不少了,手机上很多应用软件都涉及到弹窗控件,比如典型的每次删除一个图片或者卸载一个等都会弹出一个窗口
- 1.相关概念Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性。建