为了账号安全,请及时绑定邮箱和手机立即绑定

Java中标记接口的用途是什么?

Java中标记接口的用途是什么?

暮色呼如 2019-09-21 15:41:26
当标记接口(如Serializable)中没有实现的对象时。。实施它有什么用?
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

在Java的早期版本中,标记接口是声明有关类的元数据的唯一方法。例如,可序列化标记接口使类的作者可以说,他们的类在进行序列化和反序列化时将表现正确。


在现代Java中,标记接口没有位置。它们可以完全由Annotations代替,从而具有非常灵活的元数据功能。如果您具有有关类的信息,并且该信息永不改变,则注释是表示它的非常有用的方法。


查看完整回答
反对 回复 2019-09-21
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

Joshua Bloch:有效的Java 2nd Edition,第179页


条目37:使用标记界面定义类型


...您可能会听到说标记注释(项目35)使标记接口过时的消息。该断言是不正确的。标记接口相对于标记注释具有两个优点。首先,标记器接口定义一种由标记的类的实例实现的类型。标记注释没有。这种类型的存在使您能够在编译时捕获直到使用运行时便无法捕获的错误,前提是您使用了标记批注...。


就我个人而言,我认为我将向约书亚(Joshua)在该主题上的丰富知识致敬。


查看完整回答
反对 回复 2019-09-21
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

它表明该类(因此不是瞬态的所有字段)都是序列化的候选对象。而且,如果您要构建依赖于序列化的框架,那么您当然可以编写一种方法:


public void registerObject(Serializable obj);

限制您准备接受的课程。


因为序列化的对象需要保持跨系统的兼容性,所以序列化是一个明确的设计决策,因此需要使用标记接口来标识这些候选对象。


还有一个安全方面。您不想使所有内容都可序列化-否则您可能会意外地通过序列化公开(例如)密码或其他敏感数据。


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 562 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信