2013-07-21 18 views
5

Java'da enum türlerinin varsayılan serileştirilmesi readObject ve readObjectNoDataInvalidObjectException. Bu nedenle enum türleri herhangi bir kusur olmadan tekil sınıfları uygulamak için mükemmeldir (Madde 77, Etkin Java, 2. Baskı, Bloch).Java'da enum'un serileştirilmesi

  • Neden, ilk elden enum türleri Serializable'u uygular?
  • Enum referansları uygulamada nasıl seri hale getirilmelidir?

cevap

3

Enum türleri, enum sabitlerini içeren nesneleri serileştirebilmeniz için Serializable uygular. Enum sabitleri, diğer tüm objelerle aynı şekilde serileştirilir: ObjectInputStream.readObject(). Enum sabitleri normal sınıfların örneklerinden farklı olarak kodlanır, bu nedenle ObjectInputStream.readObject(), readObject yöntemini çağırmadan bunları seri hale getirebilir. Özel kodlamaları kullanan diğer sınıflar da vardır; bunlar arasında String ve Class vardır. Daha fazla bilgi için documentation'a bakın.

Seri hale getirilebilir tekil sınıflarını kendiniz uygulamak istiyorsanız, readResolve yöntemine bakın.

+0

Peki, nokta 1 burada bir cevap var. Enum referanslarını içeren sınıflar serileştirme işlemine çarpılmamalıdır. Varsayılan seri hale getirmeyi dener ve sadece çalıştı! Öyleyse neden, etkin bir şekilde seriyi yeniden düzenleyen enumları tartışan çok sayıda gönderi var (sadece kodu yeniden faktoring etmek için)? – abksrv

İlgili konular