阅读量:0
XStream本身不提供深拷贝的功能,但可以通过自定义序列化和反序列化来实现深拷贝。
下面是一个简单的示例代码,演示如何使用XStream实现深拷贝:
import com.thoughtworks.xstream.XStream; public class DeepCopyExample { public static void main(String[] args) { XStream xstream = new XStream(); // 创建一个对象 Person originalPerson = new Person("Alice", 25); // 深拷贝对象 Person copiedPerson = (Person) xstream.fromXML(xstream.toXML(originalPerson)); // 修改原始对象的属性 originalPerson.setName("Bob"); originalPerson.setAge(30); // 输出深拷贝对象的属性,与原始对象的属性应该不同 System.out.println("Copied Person: " + copiedPerson.getName() + ", " + copiedPerson.getAge()); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
在上面的示例中,我们使用XStream将对象转换为XML字符串,然后再将XML字符串转换为对象,以实现深拷贝。最后输出深拷贝对象的属性,可以看到与原始对象的属性不同。