Tengo un proyecto primavera donde i tener un método booleano que utiliza opcional al filtro a través de un conjunto de peticiones. Im que consigue un error cuando intento de retorno request.isEmpty()
, lo busqué y que podría estar usando una versión anterior de Java, pero ¿hay alguna manera alternativa decir request.isEmpty()
sin tener que actualizar mi versión de Java como im preocupado si actualizo que, afectará el resto de mi proyecto
Este es mi código para el método
private boolean hasNoDaysOffOnShiftDate(List<Request> requests, ShiftParams params) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // for string
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // for localdate
// Shift start date in LocalDate
String shiftDate = (params.start).format(formatter);
LocalDate formatDateTime = LocalDate.parse(shiftDate, formatter);
System.out.println("Shift date in date format " + formatDateTime);
Optional<Request> request = requests.stream().filter(req -> req.getStatus() == Status.Accepted)
.filter(req -> isDayOffOnShiftDate(req, formatDateTime)).findAny();
return request.isEmpty();
}
El error que estoy recibiendo es
El método
isEmpty()
no está definida para el tipo deOptional<Request>
Estoy utilizando esta versión de Java
java.version = 1.8.0_73
Optional#isEmpty()
es un método Java 11, que es un acceso directo para Java 8 de !Optional#isPresent()
.
return !request.isPresent();