什么叫序列化
當(dāng)你創(chuàng)建對(duì)象時(shí)含末,對(duì)象會(huì)一直存在猜拾。然而,當(dāng)程序終止時(shí)佣盒,對(duì)象將被銷毀不會(huì)繼續(xù)存在挎袜。如果能夠保存程序運(yùn)行時(shí)的對(duì)象信息,下次程序啟動(dòng)時(shí)肥惭,該對(duì)象進(jìn)行重建宋雏,并且與程序上次運(yùn)行時(shí)所擁有的信息相同。java序列化能夠?qū)⑦\(yùn)行時(shí)的對(duì)象信息保存下來务豺。
什么時(shí)候要用序列化
a)當(dāng)你想把的內(nèi)存中的對(duì)象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫中時(shí)候磨总;
b)當(dāng)你想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候;
c)當(dāng)你想通過RMI傳輸對(duì)象的時(shí)候笼沥;
什么時(shí)候不能序列化
1.安全方面的原因蚪燕,比如一個(gè)對(duì)象擁有private,public等field奔浅,對(duì)于一個(gè)要傳輸?shù)膶?duì)象馆纳,比如寫到文件,或者進(jìn)行rmi傳輸 等等汹桦,在序列化進(jìn)行傳輸?shù)倪^程中鲁驶,這個(gè)對(duì)象的private等域是不受保護(hù)的。
- 資源分配方面的原因舞骆,比如socket钥弯,thread類,如果可以序列化督禽,進(jìn)行傳輸或者保存脆霎,也無法對(duì)他們進(jìn)行重新的資源分 配,而且狈惫,也是沒有必要這樣實(shí)現(xiàn)睛蛛。