【问题标题】:Can we apply @FunctionalInterface annotation to abstract classes in Java?我们可以将@FunctionalInterface 注解应用于Java 中的抽象类吗?
【发布时间】:2019-03-10 14:16:52
【问题描述】:

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

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

【问题讨论】:

标签: java oop java-8 functional-programming functional-interface


【解决方案1】:

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

如果一个类型被这个注解类型注解,编译器需要生成一个错误信息,除非:

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

查看更多Abstract class as functional interface

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

    并且没有必要将它与任何其他类一起使用,枚举东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2020-11-21
      • 1970-01-01
      • 2013-06-28
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多