假设我有一个Node
类。它只有一个字段,Node parentNode.
它也有设置方法和获取方法。
我有2个节点:Node nodeA
和Node nodeB
。
这是我要执行的操作:将nodeB
的父级设置为nodeA
的父级,然后将nodeA
的父级设置为null。nodeB.setParent(nodeA.getParent());
nodeA.setParent(null);
// bad since nodeB.getParent() will = null
为了实现上述目的,我必须克隆nodeA,
然后执行nodeB.setParent(nodeAClone.getParent())
吗?
最佳答案
nodeA.setParent(null); //不好,因为nodeB.getParent()将= null
不,nodeB.parent
将不会设置为null
。 Java始终使用Pass by Value
而不是pass by reference
。重复10次。
如果传递引用,则按引用值传递它们。
让我们更详细地了解。
当您这样做时:-
nodeB.setParent(nodeA.getParent());
您只需创建对
nodeA parent
的引用的副本,并将其存储在nodeB parent
中。因此,现在有两个引用nodeA parent
对象的引用。现在,将nodeA parent
设置为null
时,它已与该parent
分离,但nodeB parent
引用仍然存在。