我们可以将@FunctionalInterface注释应用于Java中的抽象类吗?

时间:2019-03-10 14:16:53

标签: java java-8 functional-interface

我知道它可以在 interface 上应用,但是由于具有默认方法的接口(Java 8+ Interfaces)现在非常接近抽象类,所以我想知道现在我们可以在 @FunctionalInterface中使用抽象类

如果不是为什么我们不能?

3 个答案:

答案 0 :(得分:4)

您不能将@FunctionalInterface应用于抽象类,枚举或其他注释。来自java doc

  

如果使用该注释类型对类型进行注释,则编译器必须生成错误消息,除非:

     
      
  • 该类型是接口类型,而不是注释类型,枚举或类。
  •   
  • 带注释的类型满足功能接口的要求。
  •   

查看更多Abstract class as functional interface

答案 1 :(得分:1)

顾名思义,它应该用于接口。将其应用于类将产生以下结果:

  

错误:(10,1)java:意外的@FunctionalInterface批注     xxx不是功能界面

但这不是什么大问题,因为这只是一个方法接口的标记接口。

答案 2 :(得分:-1)

功能接口用于特定目的- 它仅与仅具有一种且只有一种抽象方法的接口一起使用。 如果不是,那么编译器会抱怨-

Invalid '@FunctionalInterface' annotation; TestInterface is not a functional interface

Eclipse showing error

与其他任何类(枚举类)一起使用没有意义