【发布时间】:2015-07-16 11:12:06
【问题描述】:
最近我在一次采访中遇到了这个问题:
编写一个函数以返回绘图类的深层克隆实例
public class Drawing{
public List<Shape> shapes=new LinkedList<Shape>();
}
其中 shape 是一个具有许多具体实现的抽象类
public abstract class Shape implements Serializable{
}
谁能告诉我如何解决这个问题?我们需要在所有具体实现中添加克隆方法吗?
【问题讨论】:
-
Shape 实现 Serializable 的事实是一个提示。面试官可能只是希望你序列化 List
并反序列化它,并创建一个引用反序列化列表的新绘图实例。 -
@JBNizet 另一方面,如果 Shape 有瞬态字段,它们会在序列化过程中丢失,但如果对象被克隆则不会丢失。
-
检查这是否有帮助 stackoverflow.com/questions/64036/…