3
respostas

Implementação da interface Comparator

Olá tudo bem ?

Porque quando se implementa a interface Comparator, não é obrigado implementar os outros métodos, segue abaixo:

comparing​(Function<? super T,? extends U> keyExtractor);
comparing​(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator);
comparingDouble​(ToDoubleFunction<? super T> keyExtractor);
comparingInt​(ToIntFunction<? super T> keyExtractor);
reverseOrder​();

etc...

3 respostas

Olá,

os demais têm implementação padrão (default) e não precisam de implementação. Isso ocorre tbm por questões de compatibilidade, pq esses demais métodos foram inseridos em versões mais recentes do Java e para manter compatibilidade com códigos legados, esse conceito foi utilizado.

[]'s

Olá,

Entendi, os demais métodos estão marcados com a palavra reservada 'default', e garante compatibilidade com versoes antigas.

FIquei com uma dúvida, no meu caso, estou com a versão do compilador (javac 1.8.0_301), e estes métodos foram inseridos na Interface Comparator, na versão 8 (exceto: int compare​(T o1, T o2) e boolean equals​(Object obj)). Porque não fui obrigado a implementar o método equals() ? Seria porque a minha classe já estende Object ?

Olá,

Os métodos abaixo são métodos estáticos da interface, por isso não preciso implementar ?

comparing​(Function<? super T,? extends U> keyExtractor);
comparing​(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator);
comparingDouble​(ToDoubleFunction<? super T> keyExtractor);
comparingInt​(ToIntFunction<? super T> keyExtractor);
reverseOrder​();

No caso do método thenComparing​(Comparator<? super T> other) este é default, então entendo que não há necessidade de implementar. Estou com dúvida no método boolean equals​(Object obj)) também. Porque não fui obrigado a implementar o método equals() ? Seria porque a minha classe que faz a implementação de Comparator já estende Object ?

Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software