Java opcional con orElseThrow colección vacía

gariaable:

Estoy poniendo en práctica una corriente en la que yo uso una colección listOfFoo para obtener los identificadores de todos los elementos de esa lista y los utilizo para obtener valores de las instancias de barras.

Me gustaría asegurar que este método va a lanzar ResourceNotFoundException en caso de que haya ninguna página en la lista de bares, aunque en el estado actual comprueba si bares lista es nula y no lo es, ya que contiene una lista vacía.

Podría usted por favor me ayude y sugerir alguna solución?

List<Bar> bars = Optional.ofNullable(
           listOfFoos.stream()
           .map(Foo::getId)                                         
           .map(fooId -> service.getBars(fooId))                                            
       .filter(Objects::nonNull)
       .collect(Collectors.toList()))                            
       .orElseThrow(() -> new ResourceNotFoundException(Bar.class, OBJECT_NULL));
también:

Sólo tiene que añadir una Optional.filterpara entonces. Se podía hacerlo como:

List<Bar> bars = Optional.ofNullable(
        listOfFoos.stream().map(fooId -> service.getBars(fooId))
                .filter(Objects::nonNull).collect(Collectors.toList()))
        .filter(a -> !a.isEmpty())
        .orElseThrow(() -> new ResourceNotFoundException(Bar.class, OBJECT_NULL));

Aparte: Por la aplicación compartida en el código, la lista devuelta por la corriente no podría ser null, por lo que Optional.ofNullablepodría ser reemplazado por Optional.of.

Supongo que te gusta

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