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

Comparator com dois métodos abstratos e sendo uma interface funcional.

Gostaria de tirar uma dúvida com relação a resposta correta da atividade 2 da seção "02. Métodos de uma interface funcional" do curso que diz: "1 único método abstrato. Além desse método ela pode ter outros métodos, contanto que sejam default ou 'static'.

Essa estrutura é fundamental, pois assim o compilador sabe exatamente que o corpo da expressão lambda que escrevemos é a implementação de seu único método abstrato" a pergunta é "Quantos métodos uma interface funcional pode ter?". Porém olhando a documentação da interface Comparator que é dada como exemplo na seção anterior na seção de "Abstract Methods", vi que agora existe dois métodos abstratos, o "compare()" e o "equals()" e a interface é anotada por "@FunctionalInterface". Gostaria de saber como é possível existir dois métodos abstratos e a interface continuar sendo funcional?

Referência: https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html

3 respostas
solução!

Anderson, creio que o método equals é herdado de Object, a documentação até cita que ele é um override de Object. Talvez isso sirva de marcação para o compilador não contar e impactar na interface funcional. Nem sei porque citaram esse método na interface se qualquer classe já pode implementar e usar. Assim sobraria apenas um método abstrato na interface de Comparator. Mas é apenas uma suposição minha.

Isso mesmo Deisimar,

Essa interface tem apenas 1 método abstrato, que é o método int compare(T o1, T o2). O método equals é o método da classe Object mesmo, que todas as classes do Java herdam indiretamente.

Bons estudos!

Ok, obrigado Deisimar Junior e Professor Rodrigo Ferreira. :D . Isso se deve por que as classes que implementa a interface "Comparator" herdam da classe Object, no caso as classes "RuleBasedCollator" e "Collator"?

Referências: