Ank*_*eo2 1 java interface marker-interfaces java-8 functional-interface
在最近的一次采访中,有人问我一个问题:“我们怎么能说java8中的功能接口类似于标记接口”。
我无法回答这个问题。
但是我认为标记甚至没有任何方法,而功能接口必须要覆盖一种方法。
有人可以帮助我理解这是否在某些情况下是有效的论点,或者问题本身是错误的?
通常,标记器接口是仅凭其存在就具有某种效果的接口。换句话说:某种框架将使用instanceof或可能使用反射来标识某些对象或类实现该标记接口的情况,然后根据该信息来执行某些操作。
我同意您的理解:至少在我的书中,调用该接口的特定方法不是该概念“标记接口”的一部分。
在我的书之外,这似乎是一个众所周知的约定:标记接口未声明方法,请参见此处或此处。这两个来源都强调:标记接口没有方法或常量。
因此,我同意您的立场:严格意义上,函数和该包中的其他接口不是标记接口。
另一方面,我怀疑您会发现该术语的“正式”定义(例如,在Java语言规范中)。在没有官方标准的情况下,人们可以自由编造单词的“含义”。
因此,也许您的面试官认为“成为SAM ”界面在某种程度上也就是“标记”。而且我很确定您不能起诉他的意见。