【发布时间】:2017-03-19 02:09:29
【问题描述】:
我有一个编程任务要在 Java 中制作一个通用堆栈,我需要制作一个 newNode T 的深拷贝。我不知道如何制作一个可以访问其自身并输出 i 的深拷贝方法深拷贝。到目前为止,我有这个:
public class Stack<T>
{
private T[] data;
private int top;
private int size;
public Stack( )
{ top = -1;
size = 100;
data = (T[])new Object[100];
}
public Stack(int n)
{ top = -1;
size = n;
data = (T[])new Object[n];
}
public boolean push(T newNode)
{ if(top == size-1)
return false; // ** overflow error **
else
{ top = top +1;
data[top] = newNode.deepCopy();
return true; // push operation successful
}
}
public T pop( )
{ int topLocation;
if(top == -1)
return null; // ** underflow error **
else
{ topLocation = top;
top = top -1;
return data[topLocation];
}
}
public void showAll( )
{ for(int i = top; i >= 0; i--)
System.out.println(data[i].toString());
}
}
如何制作 newNode 的深层副本。我很确定我需要该方法的接口,但过去我迷路了。
【问题讨论】:
-
欢迎来到 SO。请参阅:stackoverflow.com/questions/64036/…。有没有关于
T的其他信息?是否实现clonable接口? -
@c0der: 是否实现
Cloneable无关紧要。Cloneable不提供公共克隆方法;它有不同的用途。 -
@newacct ,正如@c0der 所指出的那样,有关实际
T的更多信息可能会有所帮助,因为当您尝试深度复制具有其他引用的引用时,它会以错误的循环结束。 ......