1
resposta

Não consigo usar o print dentro do stream

Desde as aulas anteriores estou tentando usando o print dentro do .stream e dá o seguinte erro: {

"message": "Type mismatch: cannot convert from void to Optional<Curso>",
"source": "Java",
"startLineNumber": 24,
"startColumn": 41,
"endLineNumber": 24,
"endColumn": 176

}

Aqui está o código que escrevi: `package br.com.alura;

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

public class ExemplosCursos { public static void main(String[] args) { List cursos = new ArrayList(); cursos.add(new Curso("Python", 45)); cursos.add(new Curso("JavaScript", 150)); cursos.add(new Curso("Java 8", 113)); cursos.add(new Curso("C", 55));

    cursos.sort(Comparator.comparing(c -> c.getAlunos()));

    int soma = cursos.stream()
    .filter(c-> c.getAlunos()> 100)
    .mapToInt(Curso::getAlunos).sum();

    System.out.println(soma);

    Optional<Curso> optionalCurso = cursos.stream()
    .filter(c -> c.getAlunos() >= 1000)
    .findAny()
    .ifPresent(c -> System.out.println(c.getNome()));;



}

}`

1 resposta

O problema é que "ifPresent" retorna void ou seja, não tem retorno. Assim sendo não é possível atribuir esse valor para uma variável do tipo Optional.

se vc remover esse trecho "Optional optionalCurso = " o código funcionará.

Por isso a mensagem de erro diz "não é possível converter de void para Optional"

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software