如何在J2ME / BlackBerry中深度复制矢量?
答案 0 :(得分:7)
不幸的是,没有可靠的方法在Vector对象上进行深层复制。
快速回顾我认为“深层复制”的内容:深层复制是一个副本,其中不仅复制了集合的内容(在本例中为矢量),而且Vector中包含的对象是独立复制。换句话说:如果向量V包含A,并且复制(V')为V,则V'中A(A')的副本不受A的任何更改的影响,反之亦然。
通常,这将通过“克隆”对象来实现。不幸的是,如果你无法控制Vector中的对象,你就没有合理的方法来克隆它们,特别是因为JavaME没有Cloneable接口(据我所知)。
当然,如果您确实控制了对象,您可以创建自己的Cloneable接口,该接口指定clone()方法,该方法返回对象的完全独立的副本。然后,您必须确保特殊克隆Vector仅接受实现该接口的对象。从那里开始,你可以很容易地(代码方式)创建一个可以克隆自己的Vector。
答案 1 :(得分:4)
由于您将此标记为BlackBerry而不仅仅是J2ME,因此应该提到有一个CloneableVector类是BlackBerry API的一部分。如果你想坚持使用严格的J2ME,这将毫无用处。但是,如果您只是针对BlackBerry,那么它就能满足您的需求。
答案 2 :(得分:2)
您需要使用循环复制Vector的内容。
Enumeration e = projects.elements();
while (e.hasMoreElements()) {
this.projects.addElement((Project) e.nextElement());
}
需要更多信息,请参阅The Java Forum第2页回复18,答案就在那里。