00:00
那除了这一点之外呢,还有没有其他要求呢?其实也还有啊,其实也还有,呃,那再怎么去体会呢?这里边我们要说的第三个问题啊,就是除了啊,除了我们当前person类需要啊实现叫sable之外。啊,接口之外啊,说还必须保证啊,其内部的所有属性啊,也必须是可序列化的。嗯,可序列化的,那保证它内部的所有属性也可虚列化,那首先说这个string string本身是不是就可以了,哎,他不用多说了,那么其他呢,这我们写的是基本数据类型,所以这呢,我们其实有一个这个小知识点哈,就是默认情况下呢,哎,咱们的基本数据类型也是可序列化的。
01:01
那那IG呢,就是目前咱们这个呢,其实里边没什么事儿啊,因为呢,这几个属性呢,你看都是可序列化的啊,那关键呢,就是如果我们person类当中呢,大家又定义了一个什么呢?比如说每个人他可以有一个账户。啊,这是咱们写个账户,账户呢,咱们额外的再去定义一个类呗,嗯,这个比如我就写到这了啊,哎,写一个叫account,哎,这是一个账户,账户的话呢,你可以再定一个,比如说double类型的一个,哎叫balance,哎这个属性哎给大家提,哎私有化一下,哎给大家提供这个构造器。那这一个代餐的吧,整个代餐的方法。啊,整一个twoth。行,这呢是一个基本的类,这个写好以后,我们呢,诶把这个类的声明放在我们person当中,作为person的一个属性了,这个属性呢,是我们自定义类的啊,那接下来的话呢,我们再提供一个这样的构造器啊,这样12344个参数的构造器,顺便呢,你也可以把这个呃,Two string呢也给它改一下也行啊。
02:08
好,这张就写成这样了,那么接着回过来,回到最初,最初的话呢,我们这写出去一个对象了,咱们可以再去,诶写一个对象啊,CTRLC来写,再写的话呢,我们就用另外的这个勾到七了,还提到一个ID,哎,再又提到有个账户啊,有一个count余额,比如5000块钱,哎,这呢,我们换一下叭,如不是王明了,嗯,换成嗯,咱班的张学良。哎,行,这呢,我就相当于是呃,又给他做了一个序列化啊,那此时呢,大家去注意一下,我们能不能序列化成功,那这时候呢,就报错了。说呢,我们这个account呢,没有序列化,哎,其实呢,这就体现了我们当前类的所有属性呢,都必须是可序列化的才可以啊,那回过来得改,那就是改我们这个account,改account的话呢,跟咱们person呢类似,首先首先sable,其次是不是也得提供一个这样的一个常量啊,诶CTRLC,你看这个常量的话呢,值你可以给它改一改,嗯,那么它里边呢,接着看哦,就只有一个double型的balance。
03:21
哎,这里边你要是还有自定义类,是不是还得这样做呀?哎,对的啊,那这呢,因为是基本数类型啊,默认呢就是可序列化的,就不用管了,行,那这个counter可序列化了,那我们这个person呢,它的所有属性呢,也都是可序列化的了,那再回过来。来执行。那这时候呢,就不报错了啊,这时候不报错,我们下面呢再去读,读的话呢,咱们写进去两个person,那我就可以再去啊,再去读一次,这个叫P。哎,P啊,这样就OK了,那好了直行。哎,这点就回来了,行,这呢就是我们要说的这样一个问题啊,就是总结一下,要想这个自定义类是可序列化的,必须满足这样的三个点,第一个实现接口Siri来,第二个提供全息常量,第三个保证我们当前类的所有属性也必须是可序列化的,哎,这样的一个问题。
04:18
啊,这呢就结束了啊,那结束以后呢,我们写一个补充,补充在我们这个PPT里边说了这样的一个知识点,说呢,我们这个序列化也好,反序列化也好,它是不能够操作叫static或者叫transcent啊这样的修饰的成员变量的。啊,CTRLC。站过来。什么意思呢,我直接演示大家就知道了,这呢是我们这个person person里边呢,有这样的一些属性,我我这个就给它加上一个static了啊,咱们就演示一下edge的话呢,我加上这个叫trans。哎,加上这样的标识,加上以后我们重新的再去跑一下啊,重新的去做一个序列化。
05:02
嗯。哎,然后呢,我们再做一个反序列化。好,大家看我们这个结果,结果呢,我们这个name,因为咱们加了是这个呃,Static了,哎他那是no,然后我们这个transcent呢,哎也是一个默认值,相当于本身我们在这个填充这个值的时候呢,这个值呢,是不是没有帮我们保存下来啊,没有写到这个文件里,哎,那其实就想说的是,哎,像static或者是呃transcent修饰的这个成员变量的话呢,是不能够进行序列化了。还就这个意思啊。嗯,这个呢,我们再稍微新鲜点去说,这还是你这个人,这个人的话呢,刚才我们说通过这个时光门呢,你能够去以二进制流的方式呢,传输出去,这是一个序列化的过程,说呢保证你能够序列化过程,首先呢,你这个人得是可序列化的,其次呢,你的这些属性就相当于是你的这些这个身躯躯干啊,四肢一样啊,也必须都是可序列化的,否则的话,你一出去胳膊不行,胳膊留这了是吧?啊就是呃,每个属性都得是可序化的啊,那其次的话呢,假设你有个部位就不想去的话,你就把它贴个标签,哎,就他或他是吧,哎,这个呢,当然是咱们是归这个类所有的啊,本身这个sta这个呢,咱们讲就不归你这个对象所有吗?
06:23
本身这个东西不是你的是吧,这个类呢是共享的啊,你是可以掉类的而已,所以说呢,哎,Static呢,说不能够去的话可以理解,因为本身不归你所有,那么如果大家啊,你有一个自己的属性不想去的话,你就拿这个关键字去修饰就可以了。它的意思表示的就是哎,不让去序列化这个属性啊,就是它的一个意思啊,行,这呢咱们做一个演示就可以了啊,我就把这个static呢和trans呢就删掉了,行,那么到此为止呢,我们关于这个序列化的事呢,就说完了,哎总结一下,还是咱们提到刚才的这个过程,哎这个过程需要大家能够用自己的语言呢表述出来。
07:03
哎,这是一个四啊叫序列化机制,哎,这个呢是咱们讲这个事儿的一个重点啊,咱们的重点其实不在对象流啊,咱们的中心不在这个对象流啊,对象流呢,可能我们用的不一定多,但是呢,这个序列化机制是咱们后边讲包括扎一啊,包括咱们客户端当中,只要呢,你跨进程去访问,都得保证这些数据是可虚列化的。那一般情况下呢,咱们其实都习惯上用谁呢,我也不会真正的去传输这个person了,咱们通常都会把这个内存中的对象呢,转换成一种特殊格式的字符串。啊,那么这种特殊格式的字符串,实际上呢,就是后边我们要讲的杰森啊,举个例子,比如我这是个大括号,我这个大括号里边呢,我前面是个双引号,我就叫做name,哎,然后呢,我这比如冒号一下,后边就叫Tom,哎,整个呢,我这还是个字母串,然后呢,这块呢,你那个呃,逗号一下,然后呢,我再写下一个,呃,就是整个从形式上来看的话呢,它还是个字符串,这个字符串里边呢,其实你去细看,有点像咱们说的那个map一样。
08:13
哎,Map的key就是你的属性名,Map的这个value呢,就是你的,哎,你实际上这个属性的值,哎,整体上来讲,我就用一个字符串来回的去传输了,因为本身字符串呢,它就是可序列化的啊,一般不会直接去拿着person去序列化了啊,但是你要是想这样做啊,你得知道person呢,必须满足咱们说的这样的几个点啊,这样就可以了啊。
我来说两句