2010-06-17 15 views

Odpowiedz

23

Zarówno Serializable i IsSerializable pracy, zgodnie z GWT serialization docs w:

klasy zdefiniowane przez użytkownika jest serializable jeśli wszystkie następujące warunki:

  1. To jest przypisane do IsSerializable lub Serializable, albo ponieważ bezpośrednio implementuje jeden z tych interfejsów lub ponieważ wywodzi się z nadklasy, która ma
  2. Wszystkie nie-końcowe, nieprzejściowe pola instancji same mogą być szeregowalne, a
  3. Od wersji GWT 1.5 musi mieć domyślny konstruktor (zero argumentu) (z dowolnym modyfikatorem dostępu) lub w ogóle nie konstruktora.

Kluczową różnicą jest jednak, że ze względów bezpieczeństwa, wszystkie Serializable zajęcia muszą być zawarte w polityce serializacji, który jest generowany w czasie kompilacji, podczas IsSerializable zajęcia nie mają tego wymogu.

Jeśli Twoje zainteresowanie dotyczy wyłącznie GWT, a Ty nie: , np. udostępnić swoje klasy modelu między aplikacją internetową a inną aplikacją, sugeruję, aby twoje klasy modeli/DTO implementowały IsSerializable.

+0

Tu jest zagraniczne pytanie Nooba. Co masz na myśli przez "niestacjonarne pola instancji"? – Jla

+0

@DrDro: pola nie oznaczone modyfikatorem "przejściowym". –

+0

Czy potrzeba polityki serializacji ma jakiekolwiek praktyczne wady, np. wymagający dodatkowego czasu przetwarzania, ...? –

6

Jeśli udostępnianie obiektów z innych programów, a następnie użyć Serializable ponieważ jest to standardowa funkcja biblioteki Java,

Ale jeśli tylko chcesz przekazać go pomiędzy serwerem a klientem w GWT następnie użyć IsSerializable. Pomaga upewnić się, że nie można włączyć przekazywania go do miejsc, do których nie powinien się udać.