Java 8 中 Function 接口使用方法介绍

网友投稿 407 2022-07-22


目录java 8 中 Function 接口的介绍Function 接口的用法Function 接口的实例

Java 8 中 Function 接口的介绍

Java 8 中提供了一个函数式接口 Function,这个接口表示对一个参数做一些操作然后返回操作之后的值。这个接口的有一个抽象方法 apply,这个方法就是表明对参数做的操作。

// Java Function 接口的定义

@FunctionalInterface

public interface Function {

R apply(T t);

default Function compose(Function super V, ? extends T> before) {

Objects.requireNonNull(before);

return (V v) -> apply(before.apply(v));

}

default Function andThen(Function super R, ? extends V> after) {

Objects.requireNonNull(after);

return (T t) -> after.apply(apply(t));

}

static Function identity() {

return t -> t;

}

Function 接口的用法

apply 方法的使用方式如下:

Function add = p -> p + 10;

Integer http://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 multiplyTen = a -> a * 10;

Function addTen = a -> a + 10;

// 先增加 10,然后再乘 10,输出结果 110

Function addTenThenMultiplyTen = multiplyTen.compose(addTen);

System.out.println(addTenThenMultiplyTen.apply(1));

// 先乘 10,然后再加 10,输出结果 20

Function multiplyTenAddTenThen = multiplyTen.andThen(addTen);

System.out.println(multiplyTenAddTenThen.apply(1));

Function 接口的实例

public class CheckUtils {

private static final Function lengthCheck = params -> {

if (params.length() > 100) {

throw new RuntimeException("Length exceed max limit.");

}

return pssPzKEexnarams;

};

private static final Function 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 8 中 Function 接口使用方法介绍的文章就介绍到这了,更多相关Java Function 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!


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

上一篇:java解析Excel文件的方法实例详解
下一篇:Spring Boot详解创建和运行基础流程
相关文章

 发表评论

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