好的,我有一个名为CarNode的课程:
public class CarNode {
private Car car;
private CarNode node;
}
和复制构造函数:
public CarList(CarList list) {
CarNode element = list.head;
CarNode node = new CarNode();
this.head = node;
while(element != null) {
node.setCar(element.getCar());
element = element.getNode();
if(element != null) {
node.setNode(new CarNode());
node = element;
}
}
}
我不明白元素如何通过element.getNode()获取另一个汽车节点的值,但您需要编写node.setNode()和node.setCar ()节点 ...我很困惑......
答案 0 :(得分:1)
CarNode有一个变量节点,它也是一个CarNode;这意味着CarNode对象可以包含对另一个CarNode对象的引用。 element
是一个包含对CarNode的引用的变量。代码element = element.getNode()
将元素对象中的引用分配给元素引用本身(如果元素中的节点为null,则为null)。
要在CarNode
中的节点元素上设置值,请调用setNode(elementReference)
,从而产生语法node.setNode(new CarNode());
。
这是否回答了你的问题?我意识到你可能很难解释你想问什么,但实际上我们还没有一个非常明确的问题。
---附录
我会在这里回答你的评论,因为更多的评论在空间和格式方面都有限。
我认为你将“对象”与“对象引用”混为一谈。您可以将对象视为程序中某处的内存块,并将对象引用视为该块的地址。请考虑以下声明:
CarNode myCar = new CarNode();
您已使用new CarNode()
创建了一个内存块,现在myCar
引用了它。如果您现在要执行语句CarNode secondCar = myCar;
,您将有第二个对同一对象的引用,即对同一块内存。对对象/内存块所做的任何更改都将反映在myCar和secondCar中。
你所谓的“复制构造函数”也让我感到困惑。我不确定你要做什么。通常,复制构造函数创建一个或多个对象,这些对象包含与原始对象或对象集相同的数据。首先,如果原始列表指针为null,则会在第一行引发NullPointerException。您创建了第一个节点并将其设置为头部,这很好,但node = element;
语句是错误的。 node
包含您要创建的节点以放入新列表,element
包含原始列表中的元素。