【发布时间】:2020-07-16 23:50:38
【问题描述】:
我有两个函数调用 Employee 和 Address DAO 类,我检查员工姓名或地址是否已被使用
为了使检查和抛出异常变得通用,我创建了以下通用函数
checkOrElseThrow 在 CommonUtil.java
public static <R, C, T extends Throwable> R checkOrElseThrow(R rtn, C chk, Supplier<? extends T> ex) throws T
{
if (chk != null)
{
throw ex.get();
}
return rtn;
}
上面的通用函数在EmployeeDAO.java和AddressDAO.java中被调用,如下所示
checkAndReturnEmployee 在 EmployeeDAO.java
public Employee checkAndReturnEmployee(Employee employee) {
return checkOrElseThrow(
employee,
employee.getAddressName(),
() -> new EntityNotFoundException("Employee already in use for another address"));
}
AddressDAO.java中的checkAndReturnAddress
public Address checkAndReturnAddress(Address address) {
return checkOrElseThrow(
address,
address.getEmployeeName(),
() -> new EntityNotFoundException("Address already in use for another address"));
}
问题
我的解决方案运行良好,但我想知道是否有其他更好的方法来重写我编写的通用函数 (checkOrElseThrow)
【问题讨论】:
-
employee.getAddressName() != null如何检查“地址已被使用”?您不是在检查数据库以查看该地址是否已被其他员工使用。
标签: java lambda java-8 throwable supplier