Java Xstream对象序列化
对于这样一个类:Java Xstream对象序列化,java,xml,Java,Xml,对于这样一个类: public class Person { private String firstname; private String lastname; private PhoneNumber phone; private PhoneNumber fax; // ... constructors and methods private void calculate() { } } XStream xstream = new XStream(new Do
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
private void calculate()
{
}
}
XStream xstream = new XStream(new DomDriver());
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
String xml = xstream.toXML(joe);
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
Person newJoe = (Person)xstream.fromXML(xml);
像这样的物体:
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
private void calculate()
{
}
}
XStream xstream = new XStream(new DomDriver());
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
String xml = xstream.toXML(joe);
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
Person newJoe = (Person)xstream.fromXML(xml);
生成的XML如下所示:
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
private void calculate()
{
}
}
XStream xstream = new XStream(new DomDriver());
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
String xml = xstream.toXML(joe);
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
Person newJoe = (Person)xstream.fromXML(xml);
从XML反序列化对象如下所示:
public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
private void calculate()
{
}
}
XStream xstream = new XStream(new DomDriver());
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
String xml = xstream.toXML(joe);
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
Person newJoe = (Person)xstream.fromXML(xml);
在对此人进行反序列化之后,是否可以执行newJoe.calculate()方法
person类中数字的值是否可以更改为另一个值,如newJoe.number=4545 是的,您可以调用方法并更改值。它与任何其他实例一样,不同之处在于它从XML文件获取值,而不是显式地将它们传递给构造函数 该对象将存在于反序列化它的VM中。如果你想在网络上完成这项工作,你需要使用类似RMI的东西在网络上传递对象。是的
我很荣幸能在这个例子中被引用。你的问题是什么?在客户端反序列化它之后,使用这个反序列化对象(比如我们的例子中的newJoe)我们能执行Person类(位于服务器中)中的newJoe.calculate()方法吗?非常感谢…will newJoe.calculate()在客户端JVM或服务器端JVM中执行?如果在客户端上反序列化XML,那么它将在客户端中执行。如果在服务器上反序列化XML,那么它将在服务器上执行。