Jav*_*per 5 java constructor deep-copy
是否应该为传递给构造函数的可变对象的对象引用设置防御副本?
如果是,那么我应该如何"深入"制作副本.在下面的示例中,我应该在所涉及的所有类的复制构造函数中进行深层复制吗?
例如:
class Graph {
AdjacencyList;
public Graph(Graph graph) {
this.list = graph.list; // shallow copy
OR
this.list = ArrayCopy(graph.list); // deep copy
}
}
class DFS implements GraphAlgo {
Graph g
DFS(Graph g) {
this.g = g; // shallow copy
OR
this.g = new Graph(graph) // deep copy
}
DFS(Algo algo) {
this.g = algo.g; // shallow copy
OR
this.g = new Graph(algo.g); // deep copy
}
}
class Algo {
GraphAlgo galgo
Algo (GraphAlgo dfsalgo) {
galgo = dfsalgo // shallow copy
OR
galgo = new DFSAlgo(dfsalgo); // deep copy
}
}
Run Code Online (Sandbox Code Playgroud)
3 ..如果有些课忘记实施深拷贝怎么办?这是否意味着我永远不会有一个安全的深度复制对象?有什么办法可以防止这个?
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |