У меня есть два вызова функций для класса Employee и Address DAO, где я проверяю, используется ли уже имя или адрес сотрудника.
Для того, чтобы сделать его универсальным c для проверки и выброса исключения, я создал следующее generi c function
checkOrElseThrow in 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;
}
и вышеупомянутая функция generi c была вызвана в 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"));
}
checkAndReturnAddress in AddressDAO. java
public Address checkAndReturnAddress(Address address) {
return checkOrElseThrow(
address,
address.getEmployeeName(),
() -> new EntityNotFoundException("Address already in use for another address"));
}
Вопрос
Мое решение - работает нормально, но я хотел бы знать, есть ли другой лучший способ переписать функцию generi c ( checkOrElseThrow ), которую я написал