00:00
那么接下来呢,咱们就来演示一下行不行,哎,演示一下啊,假如说现在我们在这个,嗯,在这个Java的这个目录下吧,我们再去新建一个新的package啊。这个package我们就叫做B吧,行吧,这里面我们写一个class,这个class我们叫student。行不行啊,就这么单独的一个类啊,这个类呢,我就嗯给它几个属性得了,嗯,有int类型学学号,还有助类型的名字啊,然后加一个构造方法,是无参的,我就给它加上去,然后再加一个什么有参数的构造方法,我再给它加上去,好吧,来OK就行了,再加一个set get方法行不行?哎,Set get方法来给它加上去啊来这个都给它选上,OK就完事。那行了,那这块的话,咱们这个兔子顺方法也可以重写一下,不管用上用不上,是不是兔子来写一把。好,这是图论方法,行了,那这个类呢,我就写完了,各位啊,写完之后呢,接下来啊,我在这儿呢,先把这个学生对象student先创建出来,New一个student。
01:03
那么这个学生呢,是1111,然后呢,学号是是他姓名这边叫张三,然后呢,我接下来这是创建对象嘛,这是创建加号对象是不是,然后接下来我们给它序列化。怎么去的,很简单,Object object output stream这个类,这个类呢,我们叫oos吧,你有一个object output。那这个流在new的时候呢,我们通过构造方法可以看一看它里边需要一个啥。需要一个。Output streamam,那好说了,它是个包装是不是,那这边我们拗一个什么就行了,一个。Find outp呗,对吧,给一个文件呗,我们就叫students吧,行吧,哎,给个文件,那么接下来我们这边有异常先不管了。然后在最后的时候呢,记得这儿要刷新要关闭。关闭很简单,刷新也很简单,在这就序列化对象就行了,os.right object这个方法把上面S传进去,这样就完了,所以说大家看理论上好像这个很多很多细节对吧?但是对于我们Java程序来说,我们不需要管,我们只需要一个调用这个right object这个方法就可以把对象写出去。
02:22
对吧,就会把这个对象给它写出去,给它序列化了是不是,哎,但是现在这个真的能够执行吗?我们写了一个类,这个程序能不能执行呢?我们来看它会不会报错。出问题了。Could not sre liable。Not sable不支持序列化异常。不支持序列化异常对吧,这个异常是说这个类啊叫student这个类呢,不支持序列化。有意思吧,是不是,哎,它不支持序列化就出问题了。啊,这个异常很有意思啊,叫做什么呀,叫做student,这个对象不支持序列化。
03:06
尴尬了,来,我们让这个类啊去实现一个接口,各位,这个接口叫thereable。Java IO下面的这个Siri level可序列化的接口,这个接口里面没有任何方法,大家看,只是一个标志性接口啊。这是个标志性接口。来,我们让这个类呢去实现这个接口,我们尝试一下好吧。来,我们尝试一下啊。来。找一个。好,大家看,没再报错吧。那么这里有没有多一个文件呢?多了一个叫students的文件,是不是这个文件你打不开啊?打不开,这个里边放的是Java对象。我们拷出来放到这儿吧。用记事本给他打开,你看。
04:01
这就是那个对象,这是那个加加va对象,看见没序列化进去了,所以这里呢,大家要注意一件事,什么事啊。参与序列化的类型必须得实现什么?这个接口。必须得实现这个接口啊,这个结论还是很重要的,需要大家记住啊。来第二点写上啊,就是参与序列化和反序列化的对象。必须怎么着呢?参与系统化和反聚化地方必须实现什么呀,这个接口。第三啊,注意。Z呢,这个接口只是一个标志性接口。通过源代码啊,通过源代码发现。发现。Stereo。Liable接口只是一个。
05:04
标志接口。对吧,这个接口里边什么代码也没有啊,这个接口当中什么代码都没有。那么它起到一个什么作用呢?起到一个标识的作用。标志的作用。啊,Java。Java这个虚拟机啊,看到这个类实现了什么呀,这个接口。啊,可能会对这个类。啊。进行什么呀,特殊待遇,雨桐老师,这个特殊待遇是什么呢?
06:00
呃,我们尝试一下看看啊,看看这个student,它实现了这个接口之后,它的class文件我们反编一下,看看有没有什么。有没有什么特殊的地方啊,尝试看一下吧,瞅一眼行不行,哎,看下这个student的这个这个这个这个这个这个类啊。嗯,它在哪呢?我找找啊,在C盘下的一个program file。不是file在这个用户这块有administrator可能有也可能没有啊看一下这个反编译器吧,行吧。Java这块有个out,然后production,然后23章,嗯,有一个叫做com b no的Java,并一下这个student点点击它打开。I want to?DJ Java compile。Next。拖过来。什么情况?哎。
07:01
改变不了了。来打开。I want to,什么东西?哎呀。这是过期了吧?这应该是过期了。我感觉。第三个是他说有一个激活码要激活吧,这是。没有激活码啊。啊。没有激活码咋整?再双击一下。拖来。行了。嗯,不行了,怎么办呢?
08:04
卸载了。我看看啊,用软件管家给他卸载一下。卸载一下啊。DJ,这个卸载电视。之后重装一下好吧。不知道行不行啊。嗯。重装一下看什么样?天天那个。节俭。不知道这个多少钱,应该是也不贵,估计。下一步。好。嗯,目录改一个。Okay。
09:02
行了,那行不行呢。拖进来。打开。进来,哎呀,不行啊。嗯,同学们,你们。可以是吧。可以,你你这样。嗯。你这样小鹏咱俩合作一下啊,来合作一下啊,合作一下那个你你去你去写,你去写一个那个那个student啊编译一下,就是你在你的idea里面写个student编译一下,实现这个接口。实现这个接口啊,然后编译一下,编译之后呢,呃,找到那个class文件,就找到刚才那个class文件,这class文件用那个用你那个工具打开一下。
10:08
打开一下,把代码粘贴过来,放到这儿发过来行吧,看一下啊。啊行了啊,那咱们这个就不再反编,也别反编译了,别反编,我就直接讲吧,各位啊,直接听吧,行吧,咱直接听一下啊直接听一下,那么刚才到哪呢,就是说我现在我这个类型啊去实现了这个。实现the that liable这个接口之后呢,它就可以序列化了,大家看见没有,我可以在这里怎么着啊,哎,创建一个student对象,然后呢,创建一个流,然后写这个对象就行了,Flash刷新,Close关闭是不是?那么现在呢,有一个很诡异的问题啊,什么问题呢?就是说诶为什么说参加序列化或者反序列化的这个对象。
11:13
他需要去实现这个接口,而这个接口现在里边又什么都没有,是一个空的接口。那我在这里给大家说一下啊,Java中有两种接口,各位,一种接口是什么呀?啊,就是普通接口,还有一种接口叫标志接口,各位啊,所有的标志接口里面都是没有方法的,标志接口起到什么作用呢?起到一个标志的作用。那老师这个标志给谁看的呢?注意啊,这个标志是是给谁啊,给Java虚拟机看的。啊,这个thereable接口,这个标志接口,这个标志接口啊,是给谁呀,给Java虚拟机参考的Java虚拟机啊看到这个。接口之后会为该类自动生成一个序列化版本号。
12:11
明白吧,就是说Java虚拟机看到了你这个学生类去实现了这个接口,它会在这里会自动,明白吧,Java虚拟机看到able接口之后,会自动生成一个序列化版本号啊,这里没有手动写出来。对吧,系统会默认提供啊Java虚拟机,Java虚拟机会默认提供什么呀,这个序列化版本号。那问题来了,对吧,这个序列化版本号有什么用,是不是这个最终的问题又归结到这个转转到另外一个位置上了,说这个序列化版本号有什么用,对吧?哎,序列化版本号有什么用呢?
13:07
对不对,哎,我们可以一会儿呢,大家别着急啊,一会儿我们会讲一讲这个序列化版本号有什么用,我们在这里啊,哎,打个问号啊,打个问号。
我来说两句