Saltar al contenido

¿Cómo transformar en operador ternario?

Esta es la solución más válida que te podemos brindar, pero obsérvala pausadamente y valora si es compatible a tu proyecto.

Solución:

actorForSaving.add(actorInDatabase.isPresent() ? actorInDatabase.get() : actor);

El operador ternario no puede ser una declaración, es una expresión que devuelve algo. En tu caso, actorInDatabase.isPresent() ? actorInDatabase.get() : actor devuelve un Actor.

Otra buena alternativa sería usar Optional#orElse como –

actorForSaving.add(actorInDatabase.orElse(actor));

Tu if está bien pero si tu De Verdad quiere usar el operador condicional aquí, la forma de hacerlo es hacerlo dentro de la lista de argumentos para add:

movieForSaving.getActors().forEach((actor) -> 
    Optional actorInDatabase = actorService.findByNameAndSurname(actor.getName(), actor.getSurname());                        
    actorForSaving.add(actorInDatabase.isPresent() ? actorInDatabase.get() : actor);
);

También puede utilizar orElse. Pero su pregunta parecía ser específicamente sobre el operador condicional. (Cual es a operador ternario — un operador que acepta tres operandos — pero no los operador ternario. De acuerdo, en este momento es el único operador ternario de Java, pero en teoría se podría agregar otro).

Ya se explicó el error. Solo la forma Streamy de usar todo y Opcional:

Movie movieForSaving = NewMovieDTOToMovie.map(newMovieDTO);
List actorsForSaving = movieForSaving.getActors().stream()
        .map(actor -> actorService.findByNameAndSurname(actor.getName(),
                 actor.getSurname()).orElse(actor))
        .collect(Collectors.toList());

movieForSaving.setActors(actorForSaving);

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *