Definición precisa de “interfaz funcional” en Java 8

Recientemente comencé a explorar Java 8 y no puedo entender el concepto de "interfaz funcional" que es esencial para la implementación de Java de las expresiones lambda. Hay unguia bastante completa a las funciones lambda en Java, pero me quedé atascado enEl capítulo que da definición al concepto de interfaces funcionales.. La definición dice:

Más precisamente, una interfaz funcional se define como cualquier interfaz que tenga exactamente un método abstracto.

Luego procede a los ejemplos, uno de los cuales esComparator interfaz:

public interface Comparator<T> {
    int compare(T o1, T o2);
    boolean equals(Object obj);
} 

Pude probar que puedo usar una función lambda en lugar del argumento del Comparador y funciona (es decir,Collections.sort(list, (a, b) -> a-b)).

Pero en la interfaz del comparador tantocompare yequals Los métodos son abstractos, lo que significa que tienedos métodos abstractos. Entonces, ¿cómo puede funcionar esto, si la definición requiere una interfaz para tenerexactamente un método abstracto? ¿Que me estoy perdiendo aqui?

Respuestas a la pregunta(6)

Su respuesta a la pregunta