1,为什么要用Jdk8之Function
通用函数,减少冗余代码,保持代码清晰
2,如何使用Function
规则:
?1、方法入参一致。
?2、方法返回参数一致。
?3、方法体处理逻辑几乎一致
3,使用展示
3.1 旧方法:
@Resource
UserDao userDao;
public List<User> loadBindIds(List<Long> ids){
List<SimpleInfoDTO> listUser = userDao.listUser(ids);
List<User> list=new LinkedList<>();
listUser.stream().forEach(
simpleInfoDTO->{
User user=new User();
user.setId(simpleInfoDTO.getId());
user.setRealName(simpleInfoDTO.getName());
user.setAccount(simpleInfoDTO.getCode());
list.add(user);
}
);
return list;
}
public List<User> loadNotBindIds(List<Long> ids) {
List<SimpleInfoDTO> listUser = userDao.listNotUser(ids);
List<User> list = new LinkedList<>();
listUser.stream().forEach(
simpleInfoDTO -> {
User user = new User();
user.setId(simpleInfoDTO.getId());
user.setRealName(simpleInfoDTO.getName());
user.setAccount(simpleInfoDTO.getCode());
list.add(user);
}
);
return list;
}
上面的旧方法中满足这三个规则
?1、方法入参一致。
?2、方法返回参数一致。
?3、方法体处理逻辑几乎一致(userDao调用的方法不同)
3.2 使用Function后:
public List<User> loadUserIds(List<Long> ids, Function<List<Long>, List<SimpleInfoDTO>> query){
List<SimpleInfoDTO> listUser = query.apply(ids);
List<User> list=new LinkedList<>();
listUser.stream().forEach(
simpleInfoDTO->{
User user=new User();
user.setId(simpleInfoDTO.getId());
user.setRealName(simpleInfoDTO.getName());
user.setAccount(simpleInfoDTO.getCode());
list.add(user);
}
);
return list;
}
public List<User> loadBindIds(List<Long> ids){
return loadUserIds(ids,arg -> userDao.listUser(ids));
}
public List<User> loadNotBindIds(List<Long> ids) {
return loadUserIds(ids,arg -> userDao.listNotUser(ids));
}
4,更多文章
https://blog.csdn.net/shichen2010/article/details/105022321?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242
|