首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么集合不能扩展Cloneable和Serializable?

为什么集合不能扩展Cloneable和Serializable?
EN

Stack Overflow用户
提问于 2012-05-06 00:59:23
回答 2查看 23K关注 0票数 9

在Java库中,Collection接口没有扩展CloneableSerializable接口的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-06 01:06:57

Collection是一个接口,它指定了一组称为元素的对象。如何维护元素组的细节留给Collection的具体实现。例如,像List这样的一些Collection实现允许重复的元素,而像Set这样的其他实现则不允许。很多Collection实现都有一个公共的clone方法。然而,将它包含在Collection的所有实现中并没有真正的意义。这是因为Collection是一种抽象表示。重要的是实现。在处理实际实现时,克隆或序列化的语义和含义将发挥作用;也就是说,具体的实现应该决定如何克隆或序列化它,或者甚至决定是否可以克隆或序列化它。在某些情况下,根据实际的备份实现,克隆和序列化可能没有多大意义。因此,在所有实现中强制克隆和序列化实际上灵活性较低,限制也更多。具体的实现应该决定它是否可以被克隆或序列化。

以下是甲骨文文档中的explanation

许多集合实现(包括JDK提供的所有实现)都会有一个公共的克隆方法,但在所有集合中都需要它将是错误的。例如,克隆一个由to级SQL数据库支持的Collection意味着什么?该方法调用是否应导致公司申请新的磁盘场?类似的论据也适用于可序列化。

如果客户端不知道集合的实际类型,让客户端决定所需的集合类型,创建此类型的空集合,并使用addAll方法将原始集合的元素复制到新集合中,这将更加灵活且不易出错。

票数 24
EN

Stack Overflow用户

发布于 2012-05-06 01:06:18

因为如果是这样的话,就需要所有的Collection实现都是CloneableSerializable,这比所需的限制更多。实现通常也会实现这些接口,但Collection接口并不需要它。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10464026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档