mejor manera de escribir la función genérica checkOrElseThrow

Alex Hombre:

Tengo dos llamadas a la función de los empleados y la clase DAO Dirección cuando puedo comprobar si el nombre del empleado o la dirección ya está en usado

Por lo que es genérico para comprobar y lanzar una excepción que he creado la siguiente función genérica

checkOrElseThrow en 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;
}

y la función genérica anterior se ha llamado en EmployeeDAO.java y AddressDAO.java similares como se muestra a continuación

checkAndReturnEmployee en EmployeeDAO.java

public Employee checkAndReturnEmployee(Employee employee) {
    return checkOrElseThrow(
        employee,
        employee.getAddressName(),
        () -> new EntityNotFoundException("Employee already in use for another address"));
}

segunda dirección de giro cheque en AddressDAO.java

public Address checkAndReturnAddress(Address address) {
    return checkOrElseThrow(
        address,
        address.getEmployeeName(),
        () -> new EntityNotFoundException("Address already in use for another address"));
}

Pregunta

Mi solución está trabajando muy bien, pero me gustaría saber si hay alguna otra forma mejor para reescribir la función genérica ( checkOrElseThrow ) que he escrito

Weston:

La mejor manera de escribir esto es no.

public Employee checkAndReturnEmployee(Employee employee) {
    if (employee.getAddressName() == null) {
      throw new EntityNotFoundException("Employee already in use for another address"));
    }
    return employee;
}

El código anterior es tan corta, pero mucho más fácil de leer. Es más claro cuál es la condición, y lo que sucede cuando no se cumple.

Su función personalizada sólo sirve para intentar crear una nueva sintaxis para Java, una que otra gente no va a entender, y es posible que pronto se olvide también.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=410280&siteId=1
Recomendado
Clasificación