我目前正在为Java编写一个图形库。正如您所期望的那样,存在一个Vertex
类。该类包含一个VertexData<T>
类型的对象,它本身可以包含任何内容。
(我知道这可能是多余的,我可以只做Vertex<T>
,但出于问题的目的,这并不重要)。
我让VertexData<T>
实现了Cloneable
,并拥有一个public VertexData<T> clone()
方法,通过序列化和反序列化调用Object
来返回深度副本,就像此处描述的那样。
现在的问题是,既然我有一个深度复制方法,是否也有意义拥有一个浅层复制?如果有的话,在什么情况下浅层复制会优于深度复制?
更新:由于大多数答案和评论在某种程度上都包含了浅层复制的一些解释,我感觉我必须澄清一下。我知道什么是浅层复制,它是如何工作的,所有的一切。我的问题是,既然这是一个库,并且我已经创建了一个深度复制方法,是否有意义提供一个浅层复制的方法?
我还要在此添加,在VertexData<T>
类中不包含原始类型。
因此,在用于存储图形库中的顶点数据的容器类的上下文中,是否需要浅层复制?
如果需要,请在我正在开发的上下文中给出一个例子。
如果不需要,我是否应该仅为完整性而添加浅层复制方法?
这是一个好习惯还是无关紧要的?