Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Uso do lambda impossibilitou a resolução.

O código a seguir foi o passado pelo instrutor:

    private double valorTotalDosPagamentos()  {
        double total = 0;    

        for(Pagamento p : pagamentos)  {
        total += p.getValor();
        }
        return total;
    }

Como imaginei que o curso poderia ter sido gravado antes da implementação do Java 8 fiz a mesma aplicação utilizando o lambda, porém o código não compilou. Segue:

private double valorTotalDosPagamentos()  {
        double total = 0;    
        this.pagamentos.forEach(pagamento -> total += pagamento.getValor());
        return total;
    }

Na descrição do problema o Eclipse diz que a variável "total" definida num escopo incluso deve ser final ou efetivamente final, aonde está o problema?

1 resposta
solução

O problema é que você está usando uma variável total dentro do seu lambda

solução:

    private double valorTotalDosPagamentos()  {
        return this.pagamentos.stream().mapToDouble(Pagamento::getValor).sum();
    }