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

Estou com dúvida no curso de Aprimorando a Orientação a Objetos com Java, no exercício do capítulo Reduzindo acoplamento com polimorfismo.

Nos métodos filtradores, qual a vantagem de usar a interface "Collection" ao invés de uma implementação dela como "ArrayList" para a lista de pagamentos iterada?

Em uma das resposta vi que um colega não alterou, ficando o código dele assim:

public Collection<Pagamento> pagamentosComValorMaiorQue(double valorMinimo) {
        ArrayList<Pagamento> pagamentosFiltrados = new ArrayList<Pagamento>();
        for (Pagamento pagamento : this) {
            if (pagamento.getValor() > valorMinimo) {
                pagamentosFiltrados.add(pagamento);
            }
        }
        return pagamentosFiltrados;
    }
2 respostas
solução!

Oi Camila,

É uma balança. Quanto mais genérico for seu tipo, mais ele poderá ser usado por outros métodos, e maior a possibilidade de você trocar a implementação interna desse método pagamentosComValorMaiorQue (afinal, você pode trocar para LinkedList sem problema algum).

Mas, quanto mais genérico for seu tipo, menos operações ele é capaz de fazer.

A ideia do exercício é fazer você entender o funcionamento do polimorfismo. Assim que isso for mais natural pra você, você começará a entender melhor quando passar um tipo mais genérico ou quando passar um tipo mais específico.

Lembre-se: o tipo mais genérico, uma interface, possibilita o uso de polimorfismo!

Consegui me explicar?

Explicou sim, obrigada!