例如
class StackElement {
String method;
int state;
}
Stack<StackElement> stack;
我想获得此
stack
的深层副本,其中包含我自己定义的StackElement
。Java是否为此提供合适的API?
如果没有,如何以简单而通用的方式实现它?
最佳答案
最简单的方法是遵循以下简单步骤:
使您的StackElement
实现Serializable
;
将整个堆栈序列化为字节数组;
反序列化回深拷贝。
缺点是性能低于最高水平。
请注意,Stack
被认为是考古文物,在Java 1.2中早已被LinkedList
淘汰,可以用作堆栈。它被废弃的原因是每个方法都是synchronized
,几乎没有增加客户端代码的线程安全性,但是却带来了性能下降甚至可能的死锁。