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>