java - 我们如何/为什么可以说 java 8 中的功能接口(interface)是标记接口(interface)

标签 java java-8 interface functional-interface marker-interfaces

在最近的一次采访中,我被问到“我们怎么能说在 java8 中功能接口(interface)类似于标记接口(interface)”这个问题。

我无法回答这个问题。

但我认为标记甚至没有任何方法,而功能接口(interface)必须有一个方法被覆盖。

有人可以帮助我理解这在某些情况下是否是一个有效的论点,或者问题本身是错误的吗?

最佳答案

通常,标记 接口(interface)是单独存在 具有某种效果的接口(interface)。换句话说:某种框架将使用 instanceof 或反射来识别某些对象或类实现该标记接口(interface)的情况,然后根据该信息执行某些操作。

我同意你的理解:调用该接口(interface)的特定方法不是“标记接口(interface)”概念的一部分,至少在我的书中是这样。

除了我的书之外,这似乎是一个众所周知的约定:标记 接口(interface)不声明方法,参见 herethere .这两个来源都强调:标记 接口(interface)没有方法或常量。

因此我同意你的立场:该包中的函数和其他接口(interface)不是严格意义上的标记接口(interface)。

另一方面,我怀疑您会找到该术语的“官方”定义(例如在 Java 语言规范中)。而在没有官方标准的情况下,人们可以随意编造文字的“意义”。

所以也许您的面试官认为“成为 SAM”界面在某种程度上也是一个“标记”。而且我很确定你不能因为他的意见而起诉他。

关于java - 我们如何/为什么可以说 java 8 中的功能接口(interface)是标记接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56709125/

相关文章:

java - org.json.JSONException : No value for trying to parse a JSON

ubuntu - 让 gcj 识别 java-8-openjdk 库

java - 在java中验证对象的最佳方法

java - 将 java.util.function.Function 定义为 static final

java - 为什么@FormParam 不支持content=type=application/json?

java - 将 JFrame 设置为透明使得所有 JComponet 在 Linux 中都是透明的

java - Optional.ofNullable() 是否应该用于空检查?

C++ 接口(interface)——我有哪些选择?

java - 将未使用的通用参数添加到接口(interface)如何停止实现它的类?

struct - 在 Golang 中返回接口(interface)