2009-03-31 12 views
0

eine Klasse wie folgt gegeben:Xstream Objektserialisierung

public class Person { 
    private String firstname; 
    private String lastname; 
    private PhoneNumber phone; 
    private PhoneNumber fax; 
    // ... constructors and methods 
    private void calculate() 
    { 
    } 
} 

Und ein Xstream Objekt wie folgt:

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); 

Das resultierende XML wie folgt aussieht:

<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> 

Deserialisieren ein Objekt Zurück von XML sieht so aus:

Person newJoe = (Person)xstream.fromXML(xml); 

Nachdem die Person deserialisiert ist, ist es möglich, newJoe.calculate() Methode auszuführen?

Kann der Wert der in der Personenklasse vorhandenen Nummer in einen anderen wie newJoe.number = 4545 geändert werden?

+0

und Ihre Frage ist was genau? – TofuBeer

+0

nach der Deserialisierung auf der Client-Seite, mit diesem deserialisierten Objekt (sagen wir newJoe in unserem Beispiel) könnten wir in der Person-Klasse (auf dem Server) die Methode newJoe.calculate() ausführen können? –

Antwort

1

Ja, Sie können Methoden aufrufen und die Werte ändern. Wie bei jeder anderen Instanz besteht der Unterschied darin, dass die Werte aus der XML-Datei stammen, anstatt sie explizit an einen Konstruktor zu übergeben.

Das Objekt existiert in der VM, von der Sie es deserialisiert haben. Wenn Sie diese Arbeit über die Leitung durchführen möchten, müssen Sie etwas wie RMI verwenden, um die Objekte im Netzwerk zu übergeben.

+0

Vielen Dank ... wird newJoe.calculate() in Client-Seite JVM oder Server-Seite JVM ausgeführt werden? –

+0

Wenn Sie das XML auf dem Client deserialisieren, wird es im Client ausgeführt. Wenn Sie das XML auf dem Server deserialisieren, wird es auf dem Server ausgeführt. – TofuBeer

0

Ja.

Und ich bin geschmeichelt, um in dem Beispiel verwiesen werden.