Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uso de labdas para calcular seria possivel ?

Seria possivel usar lambdas para calcular todos os tipos de impostos que implementam a interface impostos ?

Tentei criar algo mas não consegui e me surgiu essa duvida

public class Execute {

    private List<Imposto> lista;

    public Execute(List<Imposto> lista) {
        this.lista = lista;
    }

    public static void main(String[] args) {
        Orcamento orcamento = new Orcamento(new BigDecimal(100));
        CalculadoraDeImpostos calculadoraDeImpostos = new CalculadoraDeImpostos();

        Object resultado = this.lista.forEach(imposto -> imposto.calcular(orcamento));
    // transformar objeto em lista
    // ler a lista
    }
}

No curso de SOLID foi feito algo parecido o exemplo acima 

public class ReajusteService {

private List<ValidacaoReajuste> validacoes;
public ReajusteService(List<ValidacaoReajuste> validacoes) {
    this.validacoes = validacoes;
}

public void reajusteSalarioDoFuncionario(Funcionario funcionario, BigDecimal aumento) {
    this.validacoes.forEach(validacaoReajuste -> validacaoReajuste.validar(funcionario, aumento));
    BigDecimal salarioAjustado = funcionario.getSalario().add(aumento);
    funcionario.atualizarSalario(salarioAjustado);
}

}

1 resposta
solução!

Que eu me lembre o foreach utiliza uma interface funcional do tipo Consumer, ou seja, ele recebe uma parâmetro mas não retorna nada, logo não tem como vc atribuir um resultado em "Object resultado". Seu código teria que ser algo do tipo:

List<Object> resultados;

this.lista.forEach(imposto -> {
    resultados.add(imposto.calcular(orcamento)));
}

A transformação deve ocorrer dentro da expressão lâmbida.