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

Erro ao utilizar Collections.sort()

Estudando coleções, fui tentar usar o seguinte exemplo no Eclipse:

public class TestaLista {

public static void main(String[] args) {
    List <Conta> list = new ArrayList<Conta>();

    Conta cc1 = new ContaCorrente();
    cc1.setNumero(10);

    Conta cc2 = new ContaCorrente();
    cc2.setNumero(5);

    Conta cc3 = new ContaCorrente();
    cc3.setNumero(2);


    list.add(cc1);
    list.add(cc2);
    list.add(cc3);

    System.out.println(list);
    Collections.sort(list);
    System.out.println("------------");
    System.out.println(list);

}

}

A minha classe ContaCorrente é filha de Conta e implementa a classe Comparable. Porém, ao utilizar o método sort() de Collections, recebo a mensagem de erro:

"The method sort(List<T>) in the type Collections is not applicable for the arguments (List<Conta>)" Alguém ajuda a entender o erro?

1 resposta
solução!

Oi Icaro, tudo bom?

Perceba o que estamos passando para o método sort(), nesse exemplo, é uma lista de Conta certo? Ou seja, nessa lista podemos ter tanto ContaCorrente quanto ContaPoupanca ou qualquer outro tipo de conta que possa surgir no nosso sistema!

A interface Comparable está sendo implementada apenas na ContaCorrente. Ou seja, seu compilador não tem como garantir que todas as Contas dentro da sua lista são do tipo ContaCorrente! Por isso o erro =)

Para solucionar seu problema, você precisaria se referencia a sua lista como uma lista de ContaCorrente, algo como:

    List <ContaCorrente> list = new ArrayList<>();

Repare que agora garantimos que dentro dessa lista, todo mundo implementa a interface Comparable pois todos são to tipo ContaCorrente!

Qualquer dificuldade, compartilhe com a gente =)