00:00
那下面呢,我们来看一下这个半生对象。里面有一个特别重要的,或者说咱们用的比较多的一个方法叫apply。那这个方法可以干什么呢?Apply它是一个应用方法,就是说我们在开发中经常会看到有人这么去写东西,请看代码。来,我先给同学们看一个小小代码啊,叫apply。Apple apply的一个DEMO。诶,OK,注意看。那么我们经常会看到有人这么写代码,怎么写呢?比如说我有一个list,对,你看我这样直接就构建了一个list,对不对?诶,你看这样子,其实你,呃,理论上来说,你应该感觉到很奇怪才对。诶,这个地方是一个对象,怎么你没有六呢是吧?在我们Java里边,同学们都知道,我们学Java的时候,我们构建一个对象嘛,要么你用反射机制,要么就六嘛,你看这个不伦不类的,在这怎么就能用呢?啊,你看我这个还能跑起来对吧,你list我输出。
01:07
哎,它就是一个对象,那这个它是怎么实现的,肯定我们心里面都会去想为什么好,同学们,那么我们就来看apply,它是这样子的啊,同学们。如果我们在伴生对象中定义一个apply方法,就可以实现类名的方式,就是类名,然后这边当然也可以传参数啊,传参数的方式来创建对象实例啊,最经典的案例就是啊,比如说刚才同学们给你看了这个案例。啊,你看这里面,如果我像这样一一定位的话呢,你看它直接就有这个东西。对吧,这里面呢,你会看到就有apply方法。Apply方法。呃,可能是从那个负类继承过来的啊,你看这不然就apply吗?对吧?诶那么我们能不能实现这个效果呢?可以的,那我举一个例子啊,我是就算案例了,案例演示。
02:00
案例演示一个apply的方法。这个很很呃很简单啊,我就直接给大家看一个案例,呃,我这我看一下我以前是什么cat cat用cat来来举例吧,K,我写了两个,一个是呃无参的apply,这个apply呢,也可以,也可以进行这个重重载,重载我就举例说明吧,写一个这样的东西来吧。写一个猫,因为猫前面已经有了,狗也有了来,猪还没有啊,猪还没有写个猪啊,没没办法啊,那么我们写个猪,Pig pig走呃,现在呢,假如哈,假如我们现在这个地方有一个,每个猪呢,有个名字啊,每个猪有个名字。啊,大家这个不要对号入座啊,不要对号入座啊,初始化来一个这个就行了,好,然后呢,我在这地方给它来一个主构造器,这个能理解吧,这个我们先说过P内啊,P内主构造器,那现在呢,我就直接给它来一个P内。
03:01
好,这个对我们来说看起来很简单,就是一个主构造器,现在呢,我们传统的构建方法,传统的构建方法是这样写的嘛,就是pig等于六一个pig啊,把这个传进去,比如说这个小猪叫小花啊,小花这个肯定是对的,现在呢,我们要换另外一种方式来构建,这样构建啊编写。编写一个什么样?哎,编写一个apply方法,Apply方法,那编写apply方法我们怎么写呢?同学们那就简单了,咱们就df apply。诶,Apply看他还有模板啊,他直接就有模板,看到没有,你写完了过后,他直接就给你了,因为我这里呢只有一句话,所以说这样写也是可以的,大家这个应该能看懂apply个方法,然后返回一个pig对不对,然后这个方法体是P,呃呃,Pig啊这是一个方法,我们再写一个,我们再重载一个啊为为了以示区别啊,现在呢,我再重载一个,比如说我还有一个apply方法,这个apply方法呢,我什么都什么都不传。
04:02
然后呢,这个这个猪的名字呢,我给他一个默认的就是如果用这个无参的apply呢,就是所有的猪都叫一个名字,比如叫什么匿名珠啊,匿名的匿名的一个猪猪。OK,好,现在呢,我有两个方法,我们来看看怎么用好怎么用,注意看这个地方是一定要去调它的。所以说其实你们可以看到,我们可以用apply来实现单立模式,对不对,因为你这个,呃,这个object是一个嘛,假如我们这个apply,呃,再把这个构造函数做成一个私有的,那他只能走走走这条线了,只是单利模式呢,我想把它放在模式设计啊,设计模式这个专题里面去讲。好,我们先来用一下吧,同学们,呃,OK,我们先使用apply apply方法来创建对象,创建对象。那么拍方法会怎么样呢?它会自动的调用,它会自动的调用,那么我写一个PIG2等于pig,他看这个时候我们就可以用了,那么我第一个用他的第一种方式就是。
05:08
这个apply,比如说我写个名字,这叫什么呢?叫小黑啊小黑小黑猪啊小黑猪,好OK,我们再来,呃写一个用这个PIG3来得到一个匿名的,所有的名字呢,都是统一的叫pig啊,这是一个午餐的,也可以午餐这个呢也可以简单这样写也是可以的,就是什么都不填好,我们来输出一下。好pig啊PIG2点,呃,上面的我就不说了,我直接把名字输出来。大家看一下就行啊,PIG2的名字,它应该是等于小黑猪pig2.0。好,我们再复制一份P3。PIG3PIG3NAME好,这边呢应该输出小黑。哎,这边。哎,这地方出了一个问题,我们看是为什么啊,同学们pigs name这个为什么不行呢?
06:07
不是没有船,他这儿掉进去了呀。他这儿掉进去了。PIG3,为什么不行啊,Pig?三点啊,这里面没有没有传这个名字是吧,没有传这个名字,但但哦,这个东西应该是写错了,估计啊,估计它不支持这个写法啊,不支这个写法,那就p3.name还是有的啊啊,因为我这个对象访问属性跟你这传不传没有关系,对不对,只是这一个他刚才我这样写的,可能不支持这个写法,我就写小括号就行了,这边应该返回一个什么呢?匿明珠。大代码能看懂吧?好,就说这种写法会自动的调用,自动触发,它会自动触发我们这个,呃,这个方法。啊,虽然你没有写没有写,但是它底层,它在底层会去触发这个apply方法,然后返回一个,呃,这个pig对象,这个会自动触发。
07:05
啊,自动触发,触发什么呢?它会自动触发,这个方法相信同学们应该能看懂,好,我们现在运行一把,看这个结果,哥们想的是不是啊,一个小黑猪,一个匿名猪猪运行一下看代码。好,我们运行完了后,我们看这个结果呢,对不对,跟我们想的是一样的O了。啊,这个apply我们就讲到这啊,非常简单。Apply虽然很简单,但是用的很多啊,就是将来你在开发中时经常会看到这种写法啊,不要觉得诶这个没见过对不对?好,这个apply呢,我给大家简单的板述一下。好的,这是半生对象之apply方法。对吧,同学们。往这放一下半身对象之apply方法,来一个标题三。来一个标题三。好的。呃,那么我把我把刚才的这个小案例给同学们放过来就可以了。
08:02
这是刚才老师写的一段代码。来吧,插入一个小表格O了,好,这是apply,我们截取一段视频。
我来说两句