网站建设方案策划书,微信官方网站首页,南京企业网站设计公司500元,计算机网站建设招聘文章目录前言一、Function是什么#xff1f;二、Function 怎么用?1.简单使用2.真正的强大之处总结前言
在java8之后,我已经习惯了开始用stream()方式编程,但是对于新引入的其他功能,还是不清楚,今天经历了一个编程问题后,让我对于Function() 这个函数有了新的认知; 一、Func…
文章目录前言一、Function是什么二、Function 怎么用?1.简单使用2.真正的强大之处总结前言
在java8之后,我已经习惯了开始用stream()方式编程,但是对于新引入的其他功能,还是不清楚,今天经历了一个编程问题后,让我对于Function() 这个函数有了新的认知; 一、Function是什么 从图中可以看到,Function是一个接口,而且仅仅有一个抽象方法,所以称之为函数式接口,在java8之后,所有的函数式接口都可以使用lambda 表达式去调用; 简单解读下:
Function是一个接口,所以我们使用的时候也就是实现这个接口可以看到apply这个抽象方法,入参是T 出参是R所以也就是实现这个apply方法,可以理解这个方法为类型的转换Function函数有三个主要的方法apply、compose、andThen apply该方法意义是执行当前函数的方法体。 composebefore先执行before函数方法体使用其返回参数再执行调用者函数的方法体。 andThen(after)先执行调用者方法将其返回值作为参数调用after函数方法体。
二、Function 怎么用?
1.简单使用
FunctionInteger,Integer multi (a) - a * 100 ;
FunctionInteger,Integer add (a) - a.intValue() 10;
// 执行multi函数的方法体 1*100100
System.out.println(multi.apply(1));
// 先执行add函数方法体 1 10 然后将其返回值11作为参数执行mutli的方法体返回1100
System.out.println(multi.compose(add).apply(1));
// 先执行multi函数方法体 1*100然后将其返回值100作为参数执行add的方法体,返回100
System.out.println(multi.andThen(add).apply(1));是的,没错,就很离谱 FunctionInteger,Integer multi (a) - a * 100 ; 这就是在定义这个function的具体执行内容,而真正调用这个function的是apply;
2.真正的强大之处
今天遇到了一个问题,就是需要在一个类中,需要调用jdbc 的 接口去作查询(userService) 不知道小伙伴的平时开发中是否遇到此类场景,那么我相信在没有function出现的时候,我们一般是这样处理的 第一种: 提前查询好所有数据,然后传入进去,循环比对找出想要的数据,然后处理 第二种: 将jdbc的接口传入,然后通过jvm加载到这个类,然后再调用这个类中的方法 那么,当我们有了function可以如何使用呢???
我现在有一个工具类 public class BeanFrom{// 第一个属性 定义一个函数 作用是想通过id 找到数据库中的用户信息private final FunctionString, User userFunction;// 第二个属性 课程信息(终点是包含用户id)private final Course course;public getUser(){// 这是调用处,相当于通过用户id从数据库中获取到了用户信息User user userFunction.apply(course.getUserId());}public SqlFrom(Course course,FunctionString, User userFunction) {this.course course;this.userFunction userFunction;}
}
那么如何使用这个工具类呢?
Autowired
UserService userService;BeanFrom beanFrom new BeanFrom (course,id- userService.queryById(id));
那么经过此番操作,实现了什么,优势是什么?
我实现了在普通的java类中,执行service的诉求我没有将service传入到工具类中,完美实现了解耦 总结
此次通过解决项目中的实际问题,记录下,对于function函数的使用有了更进一步的了解,也希望能读到此文章的小伙伴能收益,文章很浅显,希望大佬不吝赐教