【发布时间】:2014-05-28 00:20:22
【问题描述】:
我是 Java 新手,对深拷贝感到非常困惑。
我认为每个将一些可变对象作为参数并返回与输入相关的对象的方法都应该进行防御性复制。但是,经过一些编码后,我发现这非常棘手。
例如,我想从满足某些条件的容器中选择一些对象,并将它们作为较小的容器返回:
List<SomeType> chooseWithSomeCondition(List<SomeType> input)
但是SomeType是别人定义的,它不是不可变的、不可克隆的、不可序列化的,也没有任何复制构造函数。由于Java的final也帮不上忙,我不知道如何在这里进行深拷贝。
我的标准是不是太严格了?我读过的代码有问题吗?还有其他方法可以进行深度复制吗?请分享您的想法,并在此先感谢您。
【问题讨论】:
-
你在使用线程吗?