我有这个代码运作良好:
static {
myStore = PersistentStore.getPersistentObject(MY_LONG_KEY);
myList = (Vector) myStore.getContents();
if (_storedStations == null) {
myList = new Vector(4);
// prepopulate with fake data
myList.addElement(new MyItem("Eins"));
myList.addElement(new MyItem("Zwei"));
myList.addElement(new MyItem("Drei"));
myList.addElement(new MyItem("Vier"));
myStore.setContents(myList);
}
}
class MyItem implements Persistable {
.....
}
可能是因为the PersistentObject doc说:
隐含持久性
请注意,某些类是隐式持久的:Boolean,Byte,Character,Integer,Long,Object,Short,String,Vector,Hashtable。
另请注意,当您持久保存对象时,它引用的任何可持久对象也将保持不变。
但是其他数据结构呢?例如 - 而不是上面使用的Vector - 我想要一个带有键的Hashtable:字符串和值:MyItems。我怎样才能使它可以持久化并确保MyItem内容真正存储,无论该对象有多复杂?
为什么IntHashtable被列为Persistable,但Hashtable不是?
谢谢! 亚历
答案 0 :(得分:4)
当您编写有关隐式持久性的部分时,您自己列出了Hashtable,不确定您还想要确认它是否为Persistable。无论如何,如果你希望MyItems可以持久化,只需要public class MyItems implements Persistable
作为声明。它的工作方式是,如果你想要一些东西是可持久的,那么它保留副本的东西(即它的成员变量)也需要是可持久的。因此,如果MyItems需要存储String,整数向量和MyItem,您需要确保MyItem也是可持久的。
这将为您节省一些限制。例如,如果其成员变量之一是Bitmap,您将无法创建Persistable MyItems。另请注意,在方法中使用非Persistable对象不会阻止您使类本身保持可持续性。