使用 XMLEncoder 序列化 ArrayList 并没有什么特别之处。
这是一个例子:
有一个bean类TestBean:
public class TestBean {
private String name;
private int age;
public TestBean() {
this.name = "";
this.age = 0;
}
public TestBean(String name, int age) {
this.name = name;
this.age = age;
}
// Getter and setter ...
@Override
public String toString() {
return String.format("[TestBean: name='%s', age=%d]", name, age);
}
}
还有一个 Main 类,它序列化 ArrayList<TestBean> 并再次读回它:
public class Main {
private static final String FILENAME = "testbeanlist.xml";
public static void main(String[] args) {
try {
// Create a list of TestBean objects ...
final List<TestBean> list = new ArrayList<TestBean>();
list.add(new TestBean("Henry", 42));
list.add(new TestBean("Tom", 11));
System.out.println("Writing list to file " + FILENAME + ": " + list);
// ... and serialize it via XMLEncoder to file testbeanlist.xml
final XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(
new FileOutputStream(FILENAME)));
encoder.writeObject(list);
encoder.close();
// Use XMLDecoder to read the same XML file in.
final XMLDecoder decoder = new XMLDecoder(new FileInputStream(FILENAME));
final List<TestBean> listFromFile = (List<TestBean>) decoder.readObject();
decoder.close();
System.out.println("Reading list: " + listFromFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
然后输出是:
Writing list to file testbeanlist.xml: [[TestBean: name='Henry', age=42], [TestBean: name='Tom', age=11]]
Reading list: [[TestBean: name='Henry', age=42], [TestBean: name='Tom', age=11]]
TestBean 中的toString() 方法仅用于漂亮的打印。它不影响 XML 序列化。