您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

Java8中Function接口怎么使用

2024/3/29 10:14:48发布7次查看
java 8 中 function 接口的介绍java 8 中提供了一个函数式接口 function,这个接口表示对一个参数做一些操作然后返回操作之后的值。这个接口的有一个抽象方法 apply,这个方法就是表明对参数做的操作。
// java function 接口的定义@functionalinterfacepublic 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,输出结果 110function<integer, integer> addtenthenmultiplyten = multiplyten.compose(addten);system.out.println(addtenthenmultiplyten.apply(1));// 先乘 10,然后再加 10,输出结果 20function<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); }}
以上就是java8中function接口怎么使用的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录