标记界面的目的是什么?

M S*_*ach 13 java interface

可能重复:
标记界面标记界面
的用途是什么?

我知道什么是标记接口 - 没有方法的接口.示例:可序列化,远程,可克隆.

我想知道标记接口的目的是什么.这是我的理解: -

基本上它只是从普通对象中识别特殊对象.与序列化的情况一样,需要序列化的对象必须实现可序列化的接口,并且如果它是可序列化的实例,则必须在某处检查writeObject()方法.据我所知,这是使用接口serializable(标记接口)的writeObject的唯一目的.对?或者jvm在可序列化接口的基础上提供了一些额外的功能?

类似的逻辑适用于可克隆接口.

现在让我们看看它是如何有用的.

让我们在应用程序中说我们有1000个值对象.我们只想序列化100个特定对象.现在JDK已经说过程序员角色只是用标记接口将对象标记为特殊的,在这种情况下是可序列化的接口.现在JDK会处理哪个对象要序列化?

是的,我们可以通过某种博尔干国旗实现这种行为.但这将是一个糟糕的方法.

类似地,我们可以说在用户定义标记接口的情况下,我们可以借助标记接口来区分特殊对象.就像我们可以使用运算符实例来确定它是否是该特定接口的实例.如果是,则在不抛出一些异常的情况下继续.

如果以上理解正确,请告诉我们?

JB *_*zet 14

你的理解是正确的.标记界面还定义了一种类型.因此,它可以用于方法签名.例如,Hibernate的Session.get()方法将Serializable作为参数.它避免传递一个不可序列化为主参数的主键.

请注意,Cloneable被回顾性地视为一种糟糕的设计选择.

如果序列化在实现序列化时已经存在,那么Serializable当然可以用注释实现.

标记接口大多数情况下都是反模式.接口应该定义多态行为.标记接口可以由注释替换.