Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
Long-term persistence (长期持久性) 是一种能够以 XML 格式保存 bean 的模型。
有关 XML 格式以及如何为非 bean 实现长期持久性的信息可以在 XML Schema 和 Using XMLEncoder 中找到。
XMLEncoder
类被分配用于写入输出文件,用于 Serializable
对象的文本表示。以下代码片段是以 XML 格式编写 Java bean 及其属性的示例:
XMLEncoder encoder = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("Beanarchive.xml"))); encoder.writeObject(object); encoder.close();
XMLDecoder
类读取使用 XMLEncoder 创建的 XML 文档:
XMLDecoder decoder = new XMLDecoder( new BufferedInputStream( new FileInputStream("Beanarchive.xml"))); Object object = decoder.readObject(); decoder.close();
XML bean 归档文件有自己的特定语法,其中包含以下标签来表示每个 bean 元素:
<java>
标签,用于体现 bean 的所有对象元素<object>
标签,表示从序列化形式重建对象所需的一组方法调用
<object class="javax.swing.JButton" method="new"> <string>Ok</string> </object>
<object class="javax.swing.JButton"> <void method="setText"> <string>Cancel</string> </void> </object>
<boolean>
<byte>
<char>
<short>
<int>
<long>
<float>
<double>
<int>5555</int>
class
> 标签,表示 Class 的实例。
<class>java.swing.JFrame</class>
array
> 标签,用于定义数组
<array class="java.lang.String" length="5"> </array>
以下代码表示一个 XML 存档,将生成 SimpleBean
组件:
<?xml version="1.0" encoding="UTF-8" ?> <java> <object class="javax.swing.JFrame"> <void method="add"> <object class="java.awt.BorderLayout" field="CENTER"/> <object class="SimpleBean"/> </void> <void property="defaultCloseOperation"> <object class="javax.swing.WindowConstants" field="DISPOSE_ON_CLOSE"/> </void> <void method="pack"/> <void property="visible"> <boolean>true</boolean> </void> </object> </java>