Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Incompatible Types

Fiz conforme o exemplo, porem (ou pelo menos acho que fiz, não to conseguindo enxergar o erro =x).

public class TestaCurso {

    public static void main(String[] args) {

        List<Cursos> cursos = new ArrayList<Cursos>();

        cursos.add(new Cursos("Python", 45));
        cursos.add(new Cursos("JavaScript", 150));
        cursos.add(new Cursos("Java 8", 113));
        cursos.add(new Cursos("C", 55));


        Optional<Cursos> optional = cursos.stream()
                .filter(c -> c.getQntAlunos() >= 100)
                .findAny();



        Cursos curso = optional.ifPresent(c -> System.out.println(c.getNome()));
        //AQUI TA O ERRO
        //Incompatible Types: void cannot be converted to Cursos
    }

}

Eu entendi o erro, mais quero saber o que fiz de errado se no exemplo ele usou assim

2 respostas
solução!

Ricardo o que acontece é que ifPresent recebe um Consumer que por sua vez possui um método void, sendo assim quando sua idea ou jre executa isso identifica que você está tentando armazenar um void em um objeto do tipo Cursos.

    public static void main(String[] args) {

        List<Cursos> cursos = new ArrayList<Cursos>();

        cursos.add(new Cursos("Python", 45));
        cursos.add(new Cursos("JavaScript", 150));
        cursos.add(new Cursos("Java 8", 113));
        cursos.add(new Cursos("C", 55));


        Optional<Cursos> optional = cursos.stream()
                .filter(c -> c.getQntAlunos() >= 100)
                .findAny();

        optional.ifPresent(c -> System.out.println(c.getNome()));
    }

Output

JavaScript

Entendi, Obrigado Leandro