1
resposta

Interface funcional com dois metodos abstratos

Talvez essa dúvida seja muito burra, mas...

Na aula é dito que o Lambda funciona em Interfaces funcionais ou seja Interfaces que tem UM método abstrato, para entao meio que se "encaixar nele".

Porém a Interface Comparator tem 2:

int compare(T o1, T o2);

boolean equals(Object o);

A exemplo do método ArrayList.Sort() que recebe Comparator como argumento, como o java sabe que a estrutura do lambda tem que se encaixar apenas no compare, e não no equals. Por exemplo:

palavras.sort((String s2) -> s2 == "Alura online");

1 resposta

Olá Lucas, tudo bem?

Não se preocupe, sua dúvida não é burra! É normal ter dúvidas em relação a conceitos novos.

Quanto a sua pergunta, o Java 8 introduziu o conceito de interfaces funcionais, que são interfaces que possuem apenas um método abstrato. Isso permite que o lambda seja utilizado para implementar esse método de forma mais simples e concisa.

No caso da interface Comparator, ela possui dois métodos abstratos, mas um deles é o equals, que já é implementado pela classe Object. Portanto, na prática, a interface Comparator possui apenas um método abstrato, que é o compare.

Espero ter ajudado e bons estudos!

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