当我查看 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)
是FunctionalInterface吗?号Comparable不具有注释。
它是一个功能界面吗?是的。从语言规范中的定义:
函数式接口是只有一个抽象方法的接口(除了 Object 的方法)
会被当作FunctionalInterface? 是:
但是,无论接口声明中是否存在 FunctionalInterface 注释,编译器都会将满足函数式接口定义的任何接口视为函数式接口。
它在逻辑上是一个功能接口吗?否:Comparable不代表功能。它更像是一个对象的特征。“这个东西可以比较”,而不是“这个东西做比较”。
它作为功能接口有什么实际用途吗?我会声称没有明显的用途,正如您很少(如果有的话)看到Comparable<Something>被用作变量、参数或字段的类型的事实所证明的;仅在extendsorimplements子句中,并且在类型变量的范围内。