假设我有一个存储HashSet<String
&gt;的节点(因此它是该节点的实例变量)。我有一个getter方法,允许我检索HashSet
,但现在我真的需要更新它。这可能吗?如果没有,那么什么是好的解决方法?我已经实现了我的树:
public class CTree implements Serializable {
public CRoot initialCommit;
public CTree(int id, CNode parent, HashSet<String> files) {
root = new CNode(id, parent, files, inheritedFiles);
}
public static class CNode implements Serializable {
int nodeID;
CNode parent;
HashSet<String> toCommit;
public CNode(int id, CNode parent, HashSet<String> files) {
nodeID = id;
this.parent = parent;
toCommit = files;
}
public HashSet<String> getFiles() {
return this.toCommit;
}
public CommitNode getParent() {
return this.parent;
}
public int getID() {
return this.nodeID;
}
}
}
答案 0 :(得分:2)
当您获得节点HashSet
时,您无法获得HashSet
的副本,您将获得对节点中同一对象的引用。因此,您只需更新它,节点的内容也将更新,因为它们指向同一个对象。
你可能会对返回原语感到困惑。在这种情况下,复制值并修改它对原始图元没有影响。