Na aula, foi implementado a interface Comparable, e foi sobrescrito o método compareTo. Fiquei com dúvida na parte, como o compareTo da classe Titulo é chamado ? Pois o método não chega a ser chamado no meu Main
Na aula, foi implementado a interface Comparable, e foi sobrescrito o método compareTo. Fiquei com dúvida na parte, como o compareTo da classe Titulo é chamado ? Pois o método não chega a ser chamado no meu Main
Oi Igor! Tudo joia?
O que acontece é que, mesmo que você não veja o método sendo chamado diretamente no seu Main
, ele é utilizado internamente pelo método Collections.sort()
.
Quando você chama Collections.sort(lista)
, o Java precisa de um critério para ordenar os objetos dentro da lista. É aí que entra a interface Comparable
e o método compareTo
. Quando a classe Titulo
implementa Comparable<Titulo>
, ela está fornecendo a lógica de comparação para que o método sort
possa organizar os objetos.
Por exemplo, se você tem uma lista de objetos Titulo
e deseja ordená-los alfabeticamente pelo nome, você implementaria o método compareTo
de forma que ele compare os nomes dos títulos:
@Override
public int compareTo(Titulo outroTitulo) {
return this.getNome().compareTo(outroTitulo.getNome());
}
Com essa implementação, quando você chama Collections.sort(lista)
, o sort
utiliza o compareTo
de cada objeto Titulo
para decidir a ordem correta. É por isso que você não vê o compareTo
sendo chamado explicitamente no seu código, mas ele está sendo utilizado "por trás das cenas" durante a ordenação.
Espero ter ajudado e bons estudos!