这是我关于stackoverflow的第一个问题,所以如果我没有正确询问,请给我一些关于如何更恰当地提问的见解。
我对如何在Node类中创建复制构造函数和克隆方法感到困惑。我理解如何为一般对象制作副本和克隆(不实现克隆),但我仍然是LinkedLists的新人。
这是我到目前为止Node类的一部分代码(LinkedList类的内部类)
private class Node
{
private Foo fooObject;
private Node link;
public Node()
{
fooObject= null;
link = null;
}
public Node(Foo fooObject, Node link )
{
this.fooObject = fooObject;
this.setLink(link);
}
public Node(Node originalNode)
{
this(originalNode.getCourse(), originalNode.getLink());
}
public Node clone()
{
return new Node(this);
}
public Foo getFoo()
{
return fooObject;
}
public void setFoo(Foo fooObject)
{
this.fooObject = fooObject;
}
public Node getLink()
{
return link;
}
public void setLink(Node link)
{
this.link = link;
}
}
制作Node对象的副本对我来说仍然没有多大意义。在您实际使用Node对象时,这不会复制已链接到另一个节点的节点吗?副本和原始文件将链接到同一节点,但副本没有链接到它的节点?如果我感到困惑,请帮助我理解,我不明白这将如何使用。
为了澄清,我试图解决的问题是在实验室的学校里被问到的。 “使用内部类编写LinkedList类......内部类具有复制构造函数和克隆方法...确保复制构造函数和克隆方法生成深层复制...”
*编辑 只想澄清一些事情,被要求在BOTH中编写一个复制构造函数和克隆方法,并且要求内部Node类。我对这一点100%肯定,我没有时间要求技术援助澄清,因为有太多人在问她问题! *
谢谢!
答案 0 :(得分:0)
看起来您被要求在Linked List类上实现复制构造函数和clone方法...而不是Node类。
如果指定要进行深层复制,则克隆的链接列表对象应复制原始链接列表中的所有节点。
我建议你从:
开始public MyLinkedList(MyLinkedList originalNode)