Точное определение «функционального интерфейса» в Java 8.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Точное определение «функционального интерфейса» в Java 8.

Сообщение Anonymous »

Недавно я начал изучать Java 8 и не могу до конца понять концепцию «функционального интерфейса», которая необходима для реализации лямбда-выражений в Java. Существует довольно подробное руководство по лямбда-функциям в Java, но я застрял на главе, в которой дается определение концепции функциональных интерфейсов. Определение гласит:


Точнее, функциональный интерфейс определяется как любой интерфейс, который имеет ровно один абстрактный метод.


Затем он переходит к примерам, одним из которых является интерфейс Comparator:

Код: Выделить всё

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

Мне удалось проверить, что я могу использовать лямбда-функцию вместо аргумента Comparator, и она работает (т. е. Collections.sort(list , (a, b) -> a-b)).

Но в интерфейсе Comparator методы сравнения и равенства являются абстрактными, что означает, что он имеет два абстрактных метода . Так как же это может работать, если определение требует, чтобы интерфейс имел ровно один абстрактный метод? Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/146 ... -in-java-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»