Naha kelas anu ngalaksanakeun Serializable kedah ngagaduhan konstruktor henteu aya argumen?

0
8214

No Ieu misconception umum. Prosés deserialization teu make constructor obyék urang - obyék ieu instantiated tanpa constructor sarta initialized ngagunakeun data conto serialized. Hijina sarat dina constructor pikeun kelas nu implements Serialisable nya éta superclass non-serializable munggaran dina hirarki warisan na kudu boga constructor no-argumentasi. (Tingali http://www.jguru.com/jguru/faq/view.jsp?EID=34802 pikeun katerangan anu langkung lengkep). Ieu masuk akal: deserialization kedah ngarekonstruksikeun sadayana kaayaan obyék, anu kalebet kaayaan superclasses. Upami superclass henteu tiasa diserialisasikeun nyalira, maka deserialization kedah instantiate superclass éta ti mimiti - sahingga saratna. Contona, kalawan kelas handap:

kelas umum MySerializableClass ngalaksanakeun Serializable {...}

Anjeun leres teu peryogi constructor no-argumentasi. MySerializableClass nyumponan sadaya sarat sabab superclass non-serializable munggaran, barang, ngabogaan constructor no-argumentasi. Dina conto di handap ieu:

kelas publik MyFirstClass { } kelas publik MySecondClass ngalegaan MyFirstClass ngalaksanakeun Serializable { ... }

MyFirstClass boga standar, no-argument constructor, jadi euweuh constructor séjén anu diperlukeun. Lamun kitu, MyFirstClass konstruktor anu didefinisikeun anu nampi argumen tanpa ogé sacara eksplisit nyatakeun konstruktor no-argument, teras anjeun bakal nampi NotSerializableExceptin nalika nyobian serialize MySecondClass.

Sadaya sarat pikeun obyék anu ngalaksanakeun Serialisable didaptarkeun di http://www.jguru.com/jguru/faq/view.jsp?EID=31434.