Ang mga klase ba nga nagpatuman sa Serializable gikinahanglan nga adunay mga konstruktor nga walay argumento?

0
8222

Dili. Kini maoy kasagarang sayop nga pagsabot. Ang proseso sa deserialization wala maggamit sa constructor sa butang – ang butang gi-instantiate nga walay constructor ug gi-initialize gamit ang serialized instance data. Ang bugtong kinahanglanon sa constructor alang sa usa ka klase nga nagpatuman Serializable mao nga ang unang non-serializable superclass sa iyang inheritance hierarchy kinahanglan adunay usa ka no-argument constructor. (Tan-awa ang http://www.jguru.com/jguru/faq/view.jsp?EID=34802 para sa mas kompleto nga katin-awan). Makataronganon kini: ang deserialization kinahanglan nga tukuron pag-usab ang tibuuk nga kahimtang sa butang, nga naglakip sa estado sa bisan unsang mga superclass. Kung ang superclass dili mahimo nga serializable, nan ang deserialization kinahanglan nga i-instantiate ang superclass gikan sa wala - sa ingon ang kinahanglanon. Pananglitan, sa mosunod nga klase:

pampublikong klase nga MySerializableClass nagpatuman sa Serializable { ... }

nahimo nimo dili nagkinahanglan ug walay argumento nga tigtukod. AkongSerializableClass nagtagbo sa tanan nga mga kinahanglanon tungod kay ang una nga dili ma-serialize nga superclass, butang, adunay walay argumento nga tigtukod. Sa mosunod nga pananglitan:

pampubliko nga klase nga MyFirstClass { } publiko nga klase nga MySecondClass nagpalapad sa MyFirstClass nga nagpatuman sa Serializable { ... }

AkongUnang Klase adunay default, no-argument constructor, mao nga walay laing constructor ang gikinahanglan. Kung, bisan pa, AkongUnang Klase gihubit nga mga konstruktor nga midawat sa mga argumento nga wala usab tin-aw nga nagpahayag nga usa ka konstruktor nga wala’y argumento, unya makakuha ka usa ka DiliSerializableExceptin sa dihang naningkamot sa pag-serialize AkongSecondClass.

Ang tanan nga mga kinahanglanon alang sa usa ka butang nga nagpatuman Serializable nalista sa http://www.jguru.com/jguru/faq/view.jsp?EID=31434.