Java8中Function接口怎么使用

网友投稿 162 2024-02-03


Java8中Function接口怎么使用

本文讲解"Java8中Function接口如何使用",希望能够解决您遇到的有关问题,下面我们来看这篇 "Java8中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);     } }

Java编程技术

Java中的set集合怎么应用:本文讲解"Java中的set集合如何应用",希望能够解决您遇到的有关问题,下面我们来看这篇 "Java中的set集合如何应用" 文章。Set系类集合特点:无序:存取顺序不一致不重复:可以去除重复无索引:没有带 ...


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Hibernate API及核心接口
下一篇:vue项目接口管理,所有接口都在apis文件夹中统一管理操作
相关文章

 发表评论

暂时没有评论,来抢沙发吧~