问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java:什么是类的串行化?有什么作用?举个栗子呗。

发布网友 发布时间:2022-04-22 09:12

我来回答

2个回答

懂视网 时间:2022-04-22 13:33

/*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢 
| = 欢迎批评指正,希望和所有PHP爱好者共同进步! 
| = PHP5研究中心: http://blog.csdn.net/haohappy2004
+-------------------------------------------------------------------------------+
*/
第十三节--对象串行化
串行化可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.
当一个对象被串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值. 如果没有__sleep方法,PHP将保存所有属性.
例子6.16显示了如何用__sleep和__wakeup方法来串行化一个对象. Id属性是一个不打算保留在对象中的临时属性. __sleep方法保证在串行化的对象中不包含id属性. 当反串行化一个User对象,__wakeup方法建立id属性的新值. 这个例子被设计成自我保持. 在实际开发中,你可能发现包含资源(如图像或数据流)的对象需要这些方法. 
Listing 6.16 Object serialization
代码如下:<?php  
   class User  
   {  
       public $name;  
       public $id;  
       function __construct()  
       {  
           //give user a unique ID 赋予一个不同的ID  
           $this->id = uniqid();  
       }  
       function __sleep()  
       {  
           //do not serialize this->id 不串行化id    
           return(array("name"));  
       }  
       function __wakeup()  
       {  
           //give user a unique ID  
           $this->id = uniqid();  
       }  
   }  
   //create object 建立一个对象  
   $u = new User;  
   $u->name = "Leon";  
   //serialize it 串行化 注意不串行化id属性,id的值被抛弃  
   $s = serialize($u);  
   //unserialize it 反串行化 id被重新赋值  
   $u2 = unserialize($s);  
   //$u and $u2 have different IDs $u和$u2有不同的ID  
   print_r($u);  
   print_r($u2);  
?>  

热心网友 时间:2022-04-22 10:41

对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化(Serialization-连续) 。串行化的主要任务是写出对象实例变量的数值。如果变量是另一对象的引用,则引用的对象也要串行化。这个过程是递归的,串行化可能要涉及一个复杂树结构的单行化,包括原有对象、对象的对象、对象的对象的对象等等。对象所有权的层次结构称为图表(graph)。

Java对象的单行化的目标是为Java的运行环境提供一组特性,如下所示:
1) 尽量保持对象串行化的简单扼要 ,但要提供一种途径使其可根据开发者的要求进行扩展或定制。
2) 串行化机制应严格遵守Java的对象模型 。对象的串行化状态中应该存有所有的关于种类的安全特性的信息。
3) 对象的串行化机制应支持Java的对象持续性。
4) 对象的串行化机制应有足够的 可扩展能力以支持对象的远程方法调用(RMI)。
5) 对象串行化应允许对象定义自身 的格式即其自身的数据流表示形式,可外部化接口来完成这项功能。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
whirlpool如何制热 如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 我的电脑反应很慢,有时还莫名奇妙的黑屏,是怎么回事? 最近电脑反应特别慢,而且总是黑屏,怎么办 我的电脑为什么老是黑屏?反映速度也慢了,怎么回事? 电脑开机老是黑屏,反应慢 电脑经常黑屏,反映慢是什么原因 macbook air系统版本能升级么 绝地求生手游电脑版电脑能玩吗 如何用电脑玩绝地求生手游 macbookair2008年款能升级到iOS哪个版本 给篇高中生自我简介吧,最好是原创 求推荐一款好用的微信多开软件,现在用的x分身,超级复杂,完全不会 学软件开发的,以后出来除了可以做程序员,还可以做什么? 什么是对象的串行化 木质双扇常开防火门若需自动火灾联动需安装几个模块。? 有双开防火门吗 双扇防火门门除了要安装顺序器之外还需要安装自动闭门器吗 防火门的闭门器 双扇不等分防火门,小的那扇要不要装闭门器? 一樘防火门含几个闭门器 双扇防火门需要装几个顺时器 电脑反应慢啊 黑屏 电脑突然黑屏~反应也慢了~杀毒软件也没有了 电脑反应慢有时出现黑屏是怎么会事? 之前一段时间电脑反应很慢,但昨天开机还好好的,今天一开机就黑屏。求帮助! 电脑反应太慢 黑屏 是什么原因? 为什么国家越小却越要自称大? 求几部美国校园暴力电影。看好了《美国+暴力+校园》大象不要看过了 日韩不要。没看过的别瞎写 谁能告诉我最好笑的笑话 中国到底与日韩欧美等国差在哪? 讲一个立即能逗笑我的笑话 假如韩国、日本不再缴纳美国驻军费,美军会撤离吗?为何? 西游记续集大象精扮演者 求浪漫喜剧电影和爱情小清新电影 不限大陆日韩欧美 解手机密码的解锁器怎么买 多米手机密码忘了怎么解锁器 nisoh手机密码忘了怎么解锁器 手机锁屏密码解锁器 客有问陈季方足下家君太丘有何功德而荷天下重名世说新语全文翻译 以天下事为己任的名言警句,古诗词‘ 足下家君太丘有何功德,而荷天下重名。用白话文翻译一下