0

我知道它可以应用于接口,但是由于具有默认方法的接口(Java 8+ 接口)现在非常接近抽象类,现在想知道我们可以将@FunctionalInterface 与抽象类一起使用吗?

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

4

3 回答 3

4

您不能应用于@FunctionalInterface抽象类、枚举或其他注释。来自java 文档

如果使用此注解类型对类型进行注解,则编译器需要生成错误消息,除非:

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

查看更多抽象类作为功能接口

于 2019-03-10T14:27:47.527 回答
1

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

错误:(10, 1) java: Unexpected @FunctionalInterface 注解 xxx 不是函数式接口

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

于 2019-03-10T14:29:08.853 回答
-2

功能接口是为了特定目的而存在的——它只与严格来说只有一个抽象方法的接口一起使用。如果不是,那么编译器会抱怨 -

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

Eclipse 显示错误

并且将它与任何其他类一起使用是没有意义的,枚举东西

于 2019-03-10T15:36:32.790 回答