2011-02-03 16 views
13

Służam do szeregowania obiektów z ObjectOutputStream(FileOutputStream(File)) i deserializuję je za pomocą analogicznego InputStreams. Czy istnieje sposób, aby zajrzeć do tych zserializowanych plików (najlepiej w Eclipse), aby sprawdzić, czy wszystkie niezbędne atrybuty zostały napisane?Czy Eclipse ma edytor/przeglądarkę dla serializowanych plików java?

edit: wyszukiwarka google był ujemny

+0

Myślę, że masz na myśli na odwrót. – OrangeDog

+0

dziękuję, zaktualizowałem moje pytanie;) – kulpae

+0

Wiesz, że to jest takie głupie, ale ... kliknij dwukrotnie Eclipse (przynajmniej Luna i .ser jako rozszerzenie) pokaż obiekt używając domyślnego toString() – Manu

Odpowiedz

5

Napisz kilka testów (przy użyciu Eclipse wbudowanego wsparcia JUnit).

Jedynym sposobem na "zajrzenie do środka" tych plików jest użycie ObjectInputStream(FileInputStream(File)), chyba że jesteś guru kodu bajtowego i użyj edytora szesnastkowego. Jeśli faktycznie masz jakieś testy, nie musisz niczego "zaglądać do środka".

+0

+1 Za naleganie, że testowanie jest właściwą metodą weryfikacji serializacji. – rfeak

+0

Dziękuję, miałem tendencję do "robienia" testów, zamiast ich pisać. Twoje rozwiązanie motywuje mnie do napisania testu;) – kulpae

1

Napisz klasę, która ładuje plik i deserializuje obiekt. Następnie użyj widoku debugowania Eclipse, aby przejrzeć obiekt (ustawiając punkt przerwania).

2

To nie jest "niezależna" odpowiedź, tylko rozszerzenie odpowiedzi OrangeDog.

„Napisz kilka testów (przy użyciu wbudowanego wsparcia JUnit Eclipse).”

Jeśli chcesz przetestować serializacji, a następnie napisać testy, które należy wykonać następujące czynności:

  1. Serializować jeden obiekt do plik.
  2. Deserializować do innego obiektu z tego samego pliku.
  3. Skompresuj oba obiekty, aby zobaczyć, że deserializowany obiekt zawiera wszystkie wartości, które miały zostać przekształcone do postaci szeregowej (, tj. upewnij się, że "wszystkie niezbędne atrybuty zostały zapisane").
+0

Tak, właśnie to teraz zrobię, dziękuję;) – kulpae

4

Chociaż nie jest to pełnoprawny edytor, Eamonn McManus napisał transkoder, który odszyfrowuje serializowaną kropelkę w czytelnej postaci. http://weblogs.java.net/blog/2007/06/12/disassembling-serialized-java-objects

Jeśli kompatybilność i wydajność binarna są względami, byłby to dobry moment, aby zajrzeć do opcji Externalizable zamiast Serializable.

+2

Artykuł zawiera martwy link do pobrania. Ale źródło można znaleźć na https://github.com/frohoff/serialysis. – Vadzim