Así que creé una transmisión que proviene de una Lista, pero tengo algunos problemas para convertirla en un <ObjectType>,
esto es lo que probé:
ObjectType sco = getList().stream() .filter(p -> p.getValue() == value) .findFirst(); //also tried .orElse(null);
¿Alguien, por favor, sería tan amable de sugerir dónde me estoy equivocando? (Pido disculpas si esto se ha preguntado antes, pero no pude encontrar una discusión sobre este tema en particular (o no sabía los términos adecuados para buscar))
¡Gracias por adelantado!
findFirst()
le da un Optional
y luego tiene que decidir qué hacer si no está presente. Así que findFirst().orElse(null)
debería darle el objeto o nulo si no está presente
Podría simplemente hacer un .get()
en Optional
, pero eso podría considerarse una mala práctica ya get()
arrojará una excepción si Optional
no tiene contenido. Normalmente, debe afirmar la presencia/ausencia de lo Optional
y decidir qué hacer en cada caso (es por eso que está ahí, para que sepa que algo es realmente opcional y tiene que determinar qué hacer)
Si tiene una acción que desea realizar en presencia de objetos y no desea hacer nada en ausencia , puede llamar a .ifPresent()
y proporcionar un lambda como argumento. Eso se llamará con el objeto contenido, si está presente.
A partir de Java 9, otra solución sería usar Optional.ifPresentOrElse()
Creo que puede estar buscando findFirst().or Else(null)
. findFirst()
devolverá un Optional
- vacío en el caso de un vapor vacío.
A menos que haya entendido mal tu comentario. ¿Has probado esto, o orElse(null)
sin findFirst()
?