Skip to content
Karol Kokoszka edited this page May 30, 2013 · 1 revision

1. Jak działa JSerializeWriter?

Klasa implementująca ten interfejs działa w poniżej opisany sposób:

  • uprzednio sprawdzajac czy obiekt nie jest pusty przechodzi przez wszystkie jego pola
  • jezeli pole jest typu privat'e ustawia je na public
  • sprawdza czy pole powinno zostac pominiete czy nie, zostaje pominiete w przypdakach kiedy jest typu transient, kiedy nas nie interesuje
  • na podstawie typu jaki reprezentuje zostaje podjeta odpowiednia akcja zapisania do mapy danych
  • po przejsciu przez wszystkie pola dodaje do mapy pole z nazwa klasy root
  • posiada przygotowana mape reprezentujaca obiekt

2. Jak będzie wyglądać przygotowana mapa?

Zakładając, że posiadamy taki kod:

class Osoba {
	public Osoba(String name, int age) {
		this.name = name;
		this.age[0] = age;
	}

	String name;
	int[] age = { 1, 2 };

}

class Rodzina {
	public List<Osoba> rodzina = new ArrayList<Osoba>();
}

dalej w main:

                Osoba ja = new Osoba("Karol", 10);
		Osoba mama = new Osoba("Jola", 30);
		Rodzina rodzina = new Rodzina();

		rodzina.rodzina.add(ja);
                rodzina.rodzina.add(mama);

Po serializacji obiektu klasy Rodzina który będzie zawierał w sobie 2 Osoby mapa będzie wyglądać następująco(Wybaczcie ale nie wiem jak to dobrze sformatować XD):

rodzina#java.util.List = {
    elementData#[Ljava.lang.Object;Array=[
            {age#intArray=[10, 2], name#java.lang.String={
                                  value#charArray=[K, a, r, o, l]}}, 
            {age#intArray=[30, 2], name#java.lang.String={
                                   value#charArray=[J, o, l, a]}}, 
            ]}
#JSerializeMetaData#RootClassName = exesoft.Rodzina

Ogólny schemat jest taki: nazwa_pola # typ_pola = wartosc_pola gdzie wartosc_pola także może być obiektem, może być tablicą itp więc sprawa się po prostu powtarza

Clone this wiki locally