¿Cómo usar orElse cuando necesita invocar un método en el resultado?

Tengo el siguiente código soplar. Traté de encontrar una manera de evitar la if (something.isPresent())fila y declarar el Optional<Something> somethingtambién. En cambio, me gustaría encadenar el Optional.orElse()método y devolver el resultado directamente. Pero parece que no puedo encontrar una manera, ya que el método debe devolver nulo en caso de que no se encuentre el elemento, y si se encontró, debe llamar a un método antes de regresar.

Hay una mejor manera de hacerlo?

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class OrElseWhat {

    private class Something {
        private String it;
        Something(String it) { this.it = it; }
        String getIt() { return it; }
    }

    private List<Something> somethings = new ArrayList<Something>() {
        {
            add(new Something("one"));
            add(new Something("two"));
            add(new Something("three"));
        }
    };

    public String getFourOrNull() {
        Optional<Something> something = somethings.stream()
                .filter(s -> s.getIt().equals("four"))
                .findAny();

        if (something.isPresent()) {
            return something.get().getIt();
        }

        return null;
    }
}
Respuesta 1

Estoy tratando de usar ImageIO.read para leer la imagen de inputstream en un entorno multiproceso. El siguiente es el código, entity = httpResponse.getEntity (); // httpResponse es apache hc response ...

Utilizo la clase Cookies de GWT para generar cookies. Cuando uso las siguientes Cookies.setCookie (LOGIN_COOKIE_NAME, valor, caduca); Todo funciona bien. Verificando la cookie en el navegador conduce ...

Tengo 2 proyectos, que se desarrollan utilizando PlayFramework 2.4. Aunque están completamente separados en concepto, comparten algunas características comunes, como la gestión de la evolución (Liquibase), CRUD ...

Tengo una aplicación de Android en el mercado llamada D Bitly y tengo un usuario de tableta que intenta descargarla y está recibiendo "dispositivo no compatible". He revisado la configuración del mercado y dice que todo ...