Java中的标记接口

Pun*_*cky 2 java

Java中是否有标准标记接口列表?我已经读过(在一些Java书中)标记接口没有任何方法可以实现,但是当我进行谷歌搜索时 - 有一些答案指明标记接口确实可以有方法.如果是这种情况,那么我认为常规界面和标记界面之间没有区别 - 是否有可能清除我的困惑:)

Tho*_*mas 6

"标准"和"标记"接口之间确实没有技术差异.

通常,您定义一个接口来定义实现类应具有的方法.如果未指定任何方法,则将接口称为标记接口,因为如果仅将类标记为具有某些属性.

这些接口的示例是Serializable,Cloneable等等.这些接口本身并没有定义任何方法,但是根据约定和规范,您必须选择实现与它们相关的一些特殊方法,例如与之相关的一些序列化方法Serializable.然后,核心Java库将使用反射来检查在实现标记接口时是否存在这些方法.


Ale*_*exR 5

至少有一个:Serializable.我个人不记得别人了.定义ta接口的技术很古老,几乎已经过时了,因为java 1.5引入了注释,所以你可以使用注释来"标记"类而不是空接口.


fun*_*der 5

标记接口用作标记,以将消息通知给Java编译器,以便它可以向实现它的类添加特殊行为,并且它们没有任何方法声明。

自从引入Java注释功能以来,不再需要标记接口。比标记接口更好地使用功能更强大的Java注释。

标记界面的一些示例:

  • java.lang.Cloneable
  • java.io.Serializable
  • java.rmi.Remote
  • java.util.EventListener