Java Lambda表达式和Optional优化代码示例:获取角色列表
使用Lambda表达式和Optional优化获取角色列表代码
以下代码演示了如何使用Java Lambda表达式和Optional来优化获取角色列表的代码,使其更加简洁、可读性更高,同时避免了空指针异常。
原始代码:
public PageData<RoleVO> getRoleList(PageQuery<RoleDTO> pageQuery) {
String name = Optional.ofNullable(pageQuery.getQuery())
.map(RoleDTO::getName)
.orElse(null);
String remark = Optional.ofNullable(pageQuery.getQuery())
.map(RoleDTO::getRemark)
.orElse(null);
// String name = pageQuery.getQuery().getName();
// String remark = pageQuery.getQuery().getRemark();
IPage<Role> roleList = this.lambdaQuery()
.like(StrUtil.isNotBlank(name), Role::getName, name)
.like(StrUtil.isNotBlank(remark), Role::getRemark, remark)
.orderByAsc(Role::getCreateTime)
.page(new Page<>(pageQuery.getCurrent(), pageQuery.getSize()));
return new PageData<>(roleList.convert(RoleConverter.INSTANCE::roleToRoleVO));
}
优化后的代码:
public PageData<RoleVO> getRoleList(PageQuery<RoleDTO> pageQuery) {
String name = Optional.ofNullable(pageQuery.getQuery()).map(RoleDTO::getName).orElse(null);
String remark = Optional.ofNullable(pageQuery.getQuery()).map(RoleDTO::getRemark).orElse(null);
IPage<Role> roleList = lambdaQuery()
.like(StrUtil.isNotBlank(name), Role::getName, name)
.like(StrUtil.isNotBlank(remark), Role::getRemark, remark)
.orderByAsc(Role::getCreateTime)
.page(new Page<>(pageQuery.getCurrent(), pageQuery.getSize()));
return new PageData<>(roleList.convert(RoleConverter.INSTANCE::roleToRoleVO));
}
优化说明:
- 使用
Optional.ofNullable(pageQuery.getQuery()).map(RoleDTO::getName).orElse(null);来获取name和remark值,避免了空指针异常。 - 简化了代码结构,使用Lambda表达式更加简洁,可读性更高。
注意:
StrUtil.isNotBlank(name)用于判断name是否为空字符串,避免了空指针异常。RoleConverter.INSTANCE::roleToRoleVO使用方法引用,简化了代码,提高了可读性。
通过使用Lambda表达式和Optional,我们可以有效地提高代码简洁性和可读性,并避免空指针异常,从而提升代码质量。
原文地址: https://www.cveoy.top/t/topic/nsSK 著作权归作者所有。请勿转载和采集!