如何解决Blackberry:如何使数据结构例如Hashtable持久化?
| 我有很好的这段代码: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 {
.....
}
可能是因为PersistentObject文档说:
隐式持久性
请注意,有些类是隐式持久的:布尔,字节,字符,整数,长整数,对象,短整数,字符串,向量,哈希表。
还要注意,当您持久化一个对象时,它所引用的任何持久性对象也会被持久化。
但是其他数据结构呢?例如,我希望有一个哈希表,其键为:字符串和值:MyItems,而不是上面使用的Vector。无论对象多么复杂,如何使它持久化并确保MyItem内容确实被存储?
为什么将IntHashtable列为Persistable,而Hashtable却未列出?
谢谢!
亚历克斯
解决方法
在编写有关隐式持久性的部分时,您自己列出了Hashtable,不确定要验证其是否持久性。无论如何,如果您希望MyItems是可持久的,只需执行do1ѭ作为其声明即可。它的工作方式是,如果您希望某些东西是持久的,那么它保留副本的任何东西(即它的成员变量)也必须是持久的。因此,如果MyItems需要存储一个字符串,一个整数向量和一个MyItem,则需要确保MyItem也是可持久的。
这将使您对可以保存的内容有一些限制。例如,如果其成员变量之一是位图,则将无法创建Persistable MyItems。另请注意,在方法内部使用非Persistable对象不会阻止您使类本身成为Persistable。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。