Cómo reemplazar "retorno optObj.isPresent () nueva Obj2 (optObj):? Nula" en un estilo funcional?

DIBits:

Mi IDE (InteliJ) me mantiene señalando que mi código "se puede reemplazar con una sola expresión en estilo funcional", destacando el isPresent():

return timestamp.isPresent() ? new Obj2(timestamp.get()) : null;

timestamp se inicializa como un opcional:

Optional<Date> timestamp = ...

Mi suposición es que debo utilizar ifPresent. como este timestamp.ifPresent(Obj2::new). Pero ifPresentes nula y no tengo oportunidad de devolver el objeto creado. También Cant luego regresar null. ¿Hay una solución a mi código?

Ousmane D .:

Estás en lo correcto al decir ifPresentvuelve nula y por lo tanto no es adecuado en este caso. El IDE es lo que sugiere que sólo tiene que hacer:

timestamp.map(Obj2::new).orElse(null);

Esto lee como "si el opcional timestamptiene un estado presente a continuación, pasar el objeto que contiene en el Obj2constructor y devuelve esta nueva Obj2instancia de otro modo ( orElsede retorno) null.


En otra nota, IntelliJ IDEA puede ayudarle a generar el código que está sugiriendo.

por ejemplo, dado el siguiente captura de pantalla:

introducir descripción de la imagen aquí

Simplemente hecho clic en la parte de "destacado" y pulsar la tecla "ALT + ENTER", y sugiere IntelliJ si debe sustituir a la condición con un estilo funcional.

Supongo que te gusta

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