Java中的自定义标记接口

Posted

技术标签:

【中文标题】Java中的自定义标记接口【英文标题】:Custom Marker Interface in Java 【发布时间】:2019-07-13 10:40:29 【问题描述】:

由于 Serializable 和 Cloneable 是标记接口(没有任何方法的接口),所以如果我们创建自己的标记接口,那么这两者之间会有什么区别。

【问题讨论】:

我的回答是否可以接受,或者您需要其他说明吗? 【参考方案1】:

SerializableCloneable 是标准接口。它们都属于“受保护”的包(这意味着你不能向它们添加类——你可以,但这不是你每天都做的事情)。

java.io.Serializable
java.lang.Cloneable

它们在运行时被 JVM 识别。 例如,在没有实现 Cloneable 的对象上调用 clone() 会抛出一个

java.lang.CloneNotSupportedException

您可能希望将标记接口用于自定义运行时检查,甚至用于编译时处理。但是推荐的方法是使用注解

【讨论】:

你写的是对的,但是如果我们创建我们的自定义标记界面。它们还将在运行时被 JVM 识别,即使我们绑定了程序,如果它包含我们的自定义标记接口的实例,则执行此工作。那么两者会有什么区别...... @SumitSingh mmh 我想我错过了你的观点。你能写一个你想做的例子吗?

以上是关于Java中的自定义标记接口的主要内容,如果未能解决你的问题,请参考以下文章

Java 标记接口

什么是Java Marker Interface(标记接口)

什么是Java Marker Interface(标记接口)

什么是Java Marker Interface(标记接口)

为什么这些java接口没有抽象方法?浅谈Java标记接口

如何收听Android中的自定义标记位置变化?