如何在J2ME / BlackBerry中深度复制向量?
发布于 2010-03-23 03:34:52
不幸的是,没有可靠的方法来对对象的Vector进行深度复制。
快速回顾一下我认为的“深度复制”是什么:深度复制是一种复制,其中不仅复制了集合(在本例中为Vector )的内容,而且复制了Vector中包含的对象。换句话说:如果向量V包含A,并且制作了V的副本( V‘),则V’中的A (A')的副本不受A的任何更改的影响,反之亦然。
通常,这将通过“克隆”对象来实现。不幸的是,如果您无法控制Vector中的对象,您就没有合理的方法来克隆它们,特别是因为JavaME没有可克隆的接口(据我所知)。
当然,如果您确实控制了对象,则可以创建自己的Cloneable接口,该接口指定一个clone()方法,该方法返回对象的一个完全独立的副本。然后,您必须确保您的特殊克隆矢量只接受实现该接口的对象。在此基础上,您可以很容易地(在代码方面)创建一个可以克隆自身的Vector。
发布于 2010-03-23 20:30:33
由于您将其标记为BlackBerry,而不仅仅是J2ME,因此应该提到的是,有一个CloneableVector类是BlackBerry API的一部分。如果您试图坚持严格的J2ME,这将是没有什么用处的。但是,如果您只是针对BlackBerry,那么它可以满足您的需求。
net.rim.device.api.util.CloneableVector documentation
发布于 2010-03-23 02:03:02
您将需要使用循环复制Vector的内容。
Enumeration e = projects.elements();
while (e.hasMoreElements()) {
this.projects.addElement((Project) e.nextElement());
}需要更多信息请参阅The Java Forum第2页回复18,答案就在那里。
https://stackoverflow.com/questions/2494510
复制相似问题