功能接口与具有单一方法(如 Runnable)的接口

Functional Interface vs Interfaces with single methods like Runnable

在浏览函数式接口时,我无法理解它们与使用单一方法的其他接口(如 Runnable)有何不同。

我们可以在尝试使用其他功能接口时使用 Runnable。 在 Java8 之前,我们已经可以为单个功能创建接口和匿名对象。

例如:

@FunctionalInterface
public interface ITrade {
  public boolean check(Trade t);
}

这与以下内容有何不同:

public interface ITrade {
  public boolean check(Trade t);
}

没有区别,docs for FunctionalInterface状态:

An informative annotation type used to indicate that an interface type declaration is intended to be a functional interface [emphasis added]

However, the compiler will treat any interface meeting the definition of a functional interface as a functional interface regardless of whether or not a FunctionalInterface annotation is present on the interface declaration.

所以注释只是为了表明开发人员打算将该接口用作功能接口。