Java 功能接口与使用单一方法(如Runnable)的接口

Java 功能接口与使用单一方法(如Runnable)的接口,java,java-8,functional-interface,Java,Java 8,Functional Interface,在浏览功能接口时,我无法理解它们与使用单一方法(如Runnable)的其他接口有何不同 我们可以在尝试使用其他功能接口时使用Runnable。 在Java8之前,我们已经可以为单个功能创建接口和匿名对象 例如: @FunctionalInterface public interface ITrade { public boolean check(Trade t); } 这与: public interface ITrade { public boolean check(Trade t)

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

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

例如:

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

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

没有区别,州政府:

一种信息性注释类型,用于指示接口类型声明是一个功能接口[强调添加]

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


因此,注释仅表示开发人员打算将接口用作功能接口。

使用注释将保证它是有效的功能接口。它的工作原理类似于方法的
@Override
。始终进行注释是一个很好的做法,因为如果有一天有人添加另一个方法,使用@functional接口,编译器将抛出一个错误,您将能够立即看到它