2009-03-31 3 views
0

이 같은XStream과 같은 클래스 감안할 때 객체 직렬화

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

Xstream 개체 :

결과 XML은 다음과 같습니다
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> 

객체를 직렬화 복원 XML에서 돌아온 내용은 ​​다음과 같습니다.

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

Person을 deserialize 한 후에 newJoe.calculate() 메소드를 실행할 수 있습니까?

person 클래스에있는 숫자의 값을 newJoe.number = 4545와 같이 다른 것으로 변경할 수 있습니까?

+0

귀하의 질문은 정확히 무엇입니까? – TofuBeer

+0

클라이언트 측에서 역 직렬화 한 후이 직렬화되지 않은 객체 (예 : newJoe)를 사용하여 Person 클래스 (서버에 위치)에있는 newJoe.calculate() 메소드를 실행할 수 있습니까? –

답변

1

예, 메소드를 호출하고 값을 변경할 수 있습니다. 다른 인스턴스와 마찬가지로, 차이점은 명시 적으로 생성자에 전달하는 대신 XML 파일에서 값을 가져 오는 것입니다.

객체는 사용자가 비 직렬화 한 VM에 존재합니다. 유선을 통해이 작업을 수행하려면 RMI와 같은 것을 사용하여 네트워크 주변의 객체를 전달해야합니다.

+0

고맙습니다 ... newJoe.calculate()가 클라이언트 측 JVM 또는 서버 측 JVM에서 실행됩니까? –

+0

클라이언트에서 XML을 비 직렬화하면 클라이언트에서 XML이 실행됩니다. 서버에서 XML을 비 직렬화하면 서버에서 XML이 실행됩니다. – TofuBeer

0

예.

그리고 저는이 예에서 언급 될 것을 기쁘게 생각합니다.