This question already has answers here:
FunctionalInterface Comparator has 2 abstract methods

(3个答案)


2年前关闭。




我想澄清一下我对@FunctionalInterface的理解。
据我所知,我们可以在只有一个抽象方法的接口(interface)上添加@FunctionalInterface批注(尽管它可以具有多个默认和静态方法。

在Java 8中,Comparator<T>接口(interface)已用@FunctionalInterface标记,因此可以在Lambda表达式中使用,但是当我打开定义时,可以看到那里有2个抽象类
int compare(T o1, T o2);boolean equals(Object obj);
我想了解在功能接口(interface)中如何可能有两个以上的抽象方法,而仍然没有出现任何错误?帮助我清除对此的理解。

最佳答案

@FunctionalInterface批注的Java docs中回答了您的问题:



因此,Comparator接口(interface)中boolean equals(Object obj);的存在不会增加接口(interface)中存在的抽象方法的数量,因此我们可以将@FunctionalInterface应用于此接口(interface)。

09-25 19:30