在我的项目中,我使用外部库中的对象,我需要复制此对象,但我无法修改库中的类。我怎么能这样做?
这是我必须复制的对象的类:
public class Tree<T> implements Iterable<Tree<T>> {
private List<Tree<T>> children;
private T value;
private Tree<T> tree = this;
...
}
答案 0 :(得分:2)
您可以扩展该类,根据需要实现您的特定对象,您可以添加其他功能。
答案 1 :(得分:1)
如果班级没有实施Cloneable,那么这是一个很好的方法。
可接受的方法就是编写一个实用工具方法来手动复制类,但这可以让你对它的内部结构有所了解。
例如,您可以按如下方式执行浅拷贝:
T newTree = new T();
for (T t : tree) {
newTree.add(t);
}
但是因为你的班级包含子树,所以不会复制那些;它只是一个浅层副本(新树将包含对旧树中子树的引用)。
对于深层复制,您还必须递归复制子树。我不太了解你的类的结构,为它编写代码。