2
respostas

Por que ao implementar a Interface Comparator só é obrigatório implementar o metodo compare

Pelo que vi sobre as interfaces, seria obrigatório sobreescrever todos os metodos abstratos. Na classe Comparator temos 2 métodos abstratos int compare(T o1, T o2); boolean equals(Object obj);

por que é só obrigatório implementar o compare e o equals não? me confundiu sobre o que eu pensava sobre interfaces.

Obrigada!

2 respostas

Olá Vanessa, tudo bem?

Ótima pergunta! Na verdade, a obrigatoriedade de implementar todos os métodos abstratos de uma interface depende do tipo de interface que estamos lidando. Existem interfaces chamadas "funcionais", que possuem apenas um único método abstrato, e interfaces não-funcionais, que possuem mais de um método abstrato.

A interface Comparator é um exemplo de interface funcional, pois possui apenas o método abstrato "compare". Interfaces funcionais são muito utilizadas em expressões lambda e em programação funcional em geral.

Já a implementação do método equals é opcional na interface Comparator, pois ele já é implementado na classe Object, que é a classe mãe de todas as classes em Java. Portanto, se você não precisar de uma implementação específica para o método equals, você pode simplesmente herdar a implementação padrão da classe Object.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só perguntar.

Espero ter ajudado e bons estudos!

Olá Vanessa, tudo bem?

Realmente, as interfaces em Java possuem métodos abstratos que devem ser implementados pelas classes que as implementam. No caso da interface Comparator, ela possui dois métodos abstratos: compare e equals.

No entanto, a implementação do método equals é opcional, pois ele já é implementado pela classe Object, que é a superclasse de todas as classes em Java. Ou seja, se você não implementar o método equals na sua classe que implementa a interface Comparator, ele simplesmente utilizará a implementação padrão da classe Object.

Por outro lado, o método compare é essencial para a interface Comparator, pois ele é responsável por comparar dois objetos e retornar um valor inteiro que indica se o primeiro objeto é menor, igual ou maior que o segundo objeto em relação à ordenação definida pela comparação.

Espero ter esclarecido sua dúvida sobre a obrigatoriedade de implementação dos métodos abstratos na interface Comparator. Qualquer outra dúvida, é só perguntar!

Espero ter ajudado e bons estudos!