一、java8新特性Lamdba表达式
语法:
(参数) -> {方法体};
未使用Lamdba表式:
//查询所有用户
List<User> user = userService.selectUserAll();
使用Lamdba表达式:
//根据id查询单个用户信息
Function<Integer, User> fun = (x) -> {
return userService.selectUserById(x);
};
User user = fun.apply(1);
二、Java8新特性方法引用
语法:
类名::方法
//查询所有用户
List<User> user = userService.selectUserAll();
方法引用:
Function<Integer, User> fun = userService::selectUserById;
User user = fun.apply(1);
(可以对比下上面的Lamdba表达式)
三、Function<T, R>函数式接口
语法:
Function<T, R>
传入一个T,返回R
Function<Integer, User> fun = userService::selectUserById;
User user = fun.apply(1);
传入一个Integer类型的id,返回一个User的对象
(个人觉得Function接口结合Lamdba表达式和方法引用搭配使用更加明显)
四、BiFunction<T, U, R>这个接口是上面的接口是演变而来(个人认为),使用方式无外乎就是传入两个参数,返回一个参数。而Function是传入一个参数返回一个参数
User user = new User();
BiFunction<String, String, User> fun = (x,y) -> {
User use = new User();
if("1".equals(y)){
use = userService.selectById(x);
}
if("2".equals(y)){
use = userService.selectByName(x);
}
return use ;
};
//根据id查询
user = fun.appky("1", "1");
//根据Name查询
user = fun.applu("张三", "2");
五、Comparable消费者类型的接口,这个函数需要传入参数但是不需要返回任何东西的。
语法:
Comparable
传入一个T类型的变量,不需要返回
//Lamdba表达式形式
// Comparable<Integer> comparable = (x) -> {
// return userMapper.deleteByPrimaryKey(x);
// };
//方法引用形式
Comparable<Integer> comparable = userMapper::deleteByPrimaryKey;
comparable.compareTo(id);
(个人感觉这个接口适合调用删除方法)