网站首页 > 技术文章 正文
手把手教你Function编程。
今天就来讲一下function接口的使用。首先看一下function接口,function接口是一个函数式接口,它里面主要有3个常用的方法:apply、compose以及andThen。接下来就演示一下这3个方法,并进行一下简单的讲解。
·首先是apply方法,比如这边用Integer作为输入类型,string作为输出类型去定义function,它的作用就是输出这么一句话,就是number is什么,等价于下面这种方式,这边来调用一下。这边输出就是前面定义的the number is 123,输入这个数。
·然后是compose以及andThen方法,这边定义了两个函数,一个是a to one,就是输入的数加一,第二个就是MultiThree,就输入的数乘以3。
·来看一下compose方法,compose方法相当于先去执行输入的比负函数的apply方法,然后再将所得到值去调用自身的apply方法。就是这边的function的compose会先执行add one这个function,然后将所得的值再去调用apply方法。
addOne是加一,这边输入数是三,也就是先会去调用a to one function得到一个3+1,然后将所得到的值再去调用multiThree的apply方法,也就是四再去乘以三,最后会得到一个12这么一个结果。
·再看一下andThen方法,andThen方法刚好与compose相反,它会先去调用MultiThree的function,也就是会先去乘3,然后再去调用understand括号里的函数。a的问也就是先乘3以后将得到值再加一,这边预期会得到一个10。
来看一下这两个函数的调用结果,可以看到前面是先调用了addOne,然后再乘以3,第二个是先调用了multiThree,然后再进行了addOne。
·日常工作中还会自己写一些可能比较简便的工具类,比如会写一些范型方法去接受function类型的参数。举个具体的例子,比如会想要把list中的对象的某个元素去获取出来,然后组成一个list。如果自己写可能会先转成stream流,然后再去collect。
·如果这种操作比较多可以直接写工具类,就类似于这里的,会以一个范型类元素作为一个类似的路参,然后分别调用传入的Function函数,也是采用了一个泛型,从而以获取支持更多的使用场景。
·来跑一下看一下,这边定义了一个people list,people里面就两个元素,一个name,一个age,然后放两个people到list里面,调用前面的genParamList方法。传入function就是people的getName方法,正常情况下能直接获取到每一个people的name所组成的list。
·来跑一下,看到了,获取到前面两个元素的name分别是YY和TT。其他的一些泛型方法也可以根据日常需要自己去进行编写,像省略一下compose和apply的书写,understand也是类似。这边唯一需要注意的就是返回值要稍微注意一下,看看是最后返回是哪个函数的返回值类型。
这些源码都已经上传到空间了,大家想获取可以看我主页加V进行获取。欢迎大家点赞关注收藏留言,后续不迷路,让我们下期再见。
猜你喜欢
- 2024-11-16 3.1 Python高级编程-函数式编程工具
- 2024-11-16 面向对象编程的一些思考(面向对象编程的理解)
- 2024-11-16 知识总结-Java8 Stream函数式编程
- 2024-11-16 bind、call、apply 区别?如何实现一个bind?
- 2024-11-16 Javascript基础重拾笔记之手写apply、call
- 2024-11-16 java 8新特性 常用内置函数式接口
- 2024-11-16 7、JavaScript 内置的常用对象有哪些?该对象常用的方法(必会)
- 2024-11-16 Java中“::”是什么含义(java中+是什么)
- 2024-11-16 Java 8 中的 Function:让代码从繁琐到简洁的魔法工具
- 2024-11-16 13万字详细分析JDK中Stream的实现原理(中)
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-