Alex Hombre:
Tengo el siguiente fragmento de código que me gustaría tratar de cambiar a la función lambda.
if(catList != null && catList.size() > 0) {
animalType = AnimalType.CAT;
HttpEntity<List<?>> request = new HttpEntity<>(catList, headers);
response = restTemplate.postForObject(apiUrl, request, String.class);
} else if(dogList != null && dogList.size() > 0) {
animalType = AnimalType.DOG;
} else {
return;
}
De alguna manera he escrito como se muestra a continuación, pero no sé para incorporar el dogList comprobar el estado
Optional.of(catList)
.map(catList -> {
....
})
.orElse(return); //<------ THIS IS NOT POSSIBLE
¿Puede alguien por favor me ayude con este
Yassin Hajaj:
Usted puede tener otro Optional
en el interior de la primeraOptional
Optional o = Optional.of(catList)
.map(catList -> ...)
.orElse(Optional.of(dogList)
.map(dogList -> ...));
U otro método que emplea Stream
si se puede hacer la llamada al servicio lo suficientemente genérica
O utilizando otro método Stream#of
Básicamente, pasará a través de las dos listas, encontrar la primera que no es nulo (pero puede agregar otras condiciones para su filtro si lo desea) y aplicar la llamada genérica para el servicio.
Optional o = Stream.of(catList, dogList)
.filter(Objects::nonNull /*or other condition if you want*/)
.findFirst()
.map(list -> /*generic call to service*/);
E invocar esta manera
if (!o.isPresent()) return;