【问题标题】:Is @FunctionalInterface just a marker interface or more than that?@FunctionalInterface 只是一个标记接口还是更多?
【发布时间】:2021-10-22 08:07:35
【问题描述】:

我猜@FuntionalInterface 甚至在 Java 8 之前就已经存在(尽管没有直接命名为 @FunctionalInterface 接口,例如 ComparatorComparable 具有单一方法)。它只是一个标记接口还是会触发编译器检查以确保该接口包含一个且只有一个可以在 lambda 表达式中使用的方法?

【问题讨论】:

  • 无需猜测,也无需浪费时间在网上提问。只需阅读 Javadoc。那里清楚地说明了“自 1.8 以来”,并回答了您的其他问题。
  • @user207421 对此表示歉意。修改后的问题更有意义。

标签: lambda java-8 functional-programming marker-interfaces


【解决方案1】:

它甚至不是一个标记。来自@FunctionalInterface API

informative 注释类型,用于指示接口类型声明旨在成为 Java 语言规范定义的 功能接口

(我添加的突出显示)

它还用@Documented 注释,因此该注释的存在将出现在例如javadocs 中。

但是,它提供了一些编译时安全性。如果注解的接口有多个非默认方法,我们会收到编译错误。

Ideone demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2017-07-31
    • 2011-05-28
    相关资源
    最近更新 更多