Comparable Interface 是 FunctionalInterface 吗?

yal*_*ali 4 java

当我查看 Comparable 时,我正在使用反编译器工具,它有一个抽象方法并且没有FunctionalInterface注释

public interface Comparable<T> {
    int compareTo(T var1);
}
Run Code Online (Sandbox Code Playgroud)

与 Comparator 相同,但比较器有FunctionalInterface注释

    @FunctionalInterface
    public interface Comparator<T> {
    int compare(T var1, T var2);
    ... 
}
Run Code Online (Sandbox Code Playgroud)

And*_*ner 8

是FunctionalInterface吗?号Comparable不具有注释。

它是一个功能界面吗?是的。从语言规范中的定义:

函数式接口是只有一个抽象方法的接口(除了 Object 的方法)

会被当作FunctionalInterface? 是:

但是,无论接口声明中是否存在 FunctionalInterface 注释,编译器都会将满足函数式接口定义的任何接口视为函数式接口。

它在逻辑上是一个功能接口吗?否:Comparable不代表功能。它更像是一个对象的特征。“这个东西可以比较”,而不是“这个东西做比较”。

它作为功能接口有什么实际用途吗?我会声称没有明显的用途,正如您很少(如果有的话)看到Comparable<Something>被用作变量、参数或字段的类型的事实所证明的;仅在extendsorimplements子句中,并且在类型变量的范围内。


SLa*_*aks 3

可比对象是可以与其他事物进行比较的对象;compareTo()应该比较 的值this。

将其实现为 lambda 是没有意义的。