例如

class StackElement {
    String method;
    int state;
}

Stack<StackElement> stack;


我想获得此stack的深层副本,其中包含我自己定义的StackElement


Java是否为此提供合适的API?
如果没有,如何以简单而通用的方式实现它?

最佳答案

最简单的方法是遵循以下简单步骤:


使您的StackElement实现Serializable;
将整个堆栈序列化为字节数组;
反序列化回深拷贝。


缺点是性能低于最高水平。

请注意,Stack被认为是考古文物,在Java 1.2中早已被LinkedList淘汰,可以用作堆栈。它被废弃的原因是每个方法都是synchronized,几乎没有增加客户端代码的线程安全性,但是却带来了性能下降甚至可能的死锁。

09-12 02:56