00:00
那么接下来呢,我们就按照这个顺序啊,一个一个去说,首先第一个呢,叫拉曼达表达式,哎,拉曼达表达式这呢下边有介绍说为什么要使用拉玛娜表达式啊,其实说的直白一点,就是别的语言呢,出现这个东西了,挺好的,然后Java呢也加进来了啊,就这么个点,然后呢,他自己说的时候肯定得说啊,因为什么什么原因我们要加,他说的好像跟人家没关系似的,是吧,说白了就是抄一抄人家的东西,然后呢,让自己这个语言呢更具有生命力,哎,就这么简单啊,然后这个拉姆达这里提到说它是一个匿名函数,我们可以把拉姆达表达式理解为一段代码,一段可以传递的代码啊,将代码像数据一样进行传递来使用它呢,更简洁,更灵活,那这个你要看它呢,还看不出来什么意思,咱们呢,举个例子,通过代码呢,大家就能更好的去理解这个事儿,关掉新建一个包。哎,第二啊,张阿一啊,我们呢,写一个关于拉玛表示的一个例子,这呢是一个语法上的新东西啊,大家呢,没有见过的,哎,我们就叫拉姆DA这个单词会写吧?啊,是这样写呢,还是这样写呢?别整错了啊,这样的大大是吧?DA啊,这个B跟D呢,别整反了,Test,嗯,这是拉姆达表达式的一个使用举例啊。
01:30
行,我们先举举这个例子,下边呢,我们就通过这个代码呢来说一下。嗯,之前呢,咱们讲多线程的时候呢,提到过一个接口叫做reable,嗯,那这块呢,我们创建一个这个接口实现类的对象啊,那这呢,我就通过这个匿名的方式呢,哎,现在叫reable啊,我们叫二一吧,哎等于new一个,哎叫reable。哎,这呢都给我自动生成了,哎这呢就是提供一个实现randomable接口的匿名实现类的对象,这个大家应该都见过是吧?哎,在这里边,比如我们写一句话啊。
02:08
一句话,我爱北京天安门。填嗯嗯行,写了个它,写完它以后呢,我这写个二一点,我这我这块可不是这个这个多现场了啊,我直接呢是拿这个R1调的这个run啊这注意没调start,哎也没start现在是吧,哎直接调run就是一个对象调方法,这个大家应该全都能看得懂,行这个呢我们就出来了,这呢说我爱北京天安门,OK,这个呢都能看得懂,接下来呢,我们使用叫拉曼达表达式的方式呢,对它进行一个重写啊,就换一种方式来写,那前面的话呢,我们不变,或者我直接把它CTRLC粘过来啊,粘过来以后这个呢,暂时我都改成是叫R2。哎,那跟上边也没啥变化了,嗯,接下来呢,我这样改,右边这块呢,我就不要了,哎到这都不要了,上来呢就是一段小括号,然后大括号呢也不要了,这也不要了,哎整个呢回过去整成一个箭头,哎箭头呢这块也不要了。
03:15
写完了,这呢就叫拉曼达表达式,这呢,咱们就不爱天安门了啊,再爱一个东西,不爱北京故宫啊,也是一个事儿是吧?诶这样啊,好,这个学完以后,你看我们执行一下能不能正常出来,没问题啊,你看这个位置呢,在我们这个idea当中还挺人性化的,直接给你来了一个拉姆达,这是数学符号的一个拉姆达嘛,哎,这呢就叫拉姆达表达式,哎,你会看到啊,这呢是一个新的语法,首先没见过原来这个符号。哎,这呢就叫拉姆达操作符,或者呢,叫做箭头操作符啊,一个新东西啊,哎,挺有意思,再来一个例子。
04:03
哎,大家呢,能够表示这个吃惊那就对了啊,你要不吃惊的话呢,说明你老了是吧?啊哎,接着我们再举个例子,比如说咱们前面讲过叫compor啊,Comp的话呢,我们可以写一个,比如叫integer吧。然后呢,叫COM1等于new一个,还是提供compare一个匿名时间类的对象,哎,这样写,哎来个分号,这个呢,Return return呢,我们可以这样吧,我叫in.compare方法O1O2。能看懂是吧。哎,然后接下来我们这个com一点,咱们去调一下这个compare方法,我写个12写个21。COME1我通过它的调这个compare,其实调的不就是这个方法吗?哎,这个方法呢,返回一个值int类型的啊,比如我们叫COMPARE1了,打印一下这个COMPARE1,哎,我们compare呢就是用来比较对象的大小的。
05:01
此时呢,我传的是两个integer了,执行。显然呢,前一个数比较小,前个数小,后个数大,那这块你看它返回的,呃,这个我们是OU2,那这样呢,得到的前面一个减后边一个是负数了,这个负数的话呢,它就返回是负一,表明的就是前面这个数小是吧?嗯,行,这呢还是咱们原来的这种写法啊,那现在呢,咱们换一种这个新的写法。还是使用这个拉姆达表达式,哎,我这呢,把这个CTRLC给你粘过来,让你能看到是怎么变的啊。嗯,这个这个换个数吧啊,比如来个32啊,这就是个正数了先啊,这个跑不跑都行,这个都没啥变化啊,那接下来的话呢,我把下边这个改成一个拉姆达表达式了,你看我怎么改的,这个左边不变,右边呢是这个赋值,赋值的时候呢,哎,我定位到这块,定位到这块整个呢,我就光看这个参数,这个参数呢,Integer integer,这个inte其实由我们这个泛型都已经决定了,这个呢又由他决定的,当我们写这个integer的时候,其实这块都不用写了。
06:08
而这个接口,这个接口咱们一会要说啊,它其实就叫做这个函数式接口,这个接口跟上边reable类似,都只有一个抽象方法,都是这个方法,那既然呢,你这个接口中就这一个方法,其实呢,你也没有必要非得告诉我这个方法名是什么了,反正你不就一个吗。所以呢,像这里边能省的就省,像这些是不是都能省省省,这也能省,O1就别省了,这个也能省,O2也别省了,这个大括号呢也省,Return也省,这个就别省了,所以整个一下来。长啊。O1O2箭头一下,哎,点compare o1o2写完了。哎,那么咱们咱们刚才呢,提到说扎巴这个新特性,说这个更简洁了,这不就更简洁了吗?上面呢写了这么多,这呢一行搞定啊,这呢就叫做拉姆达表达式,它呢从形式上来看,是不是就充当了我们这个接口的一个实实例啊,哎,是这样子的啊哎这呢就是这样一个写法,这个写法呢,诶再让你尖叫一下是吧,再改一改啊CTRLCL。
07:24
我写了个三。三啊,这个位置呢,我还可以再改,改成谁呢?我直接呢就inte啊,冒号冒号啊,Compare啊,写完了充满了疑惑和不解,是吧?哎,再执行还是对的,嗯,这儿呢,我们暂且还叫做拉姆达表达式的写法。嗯呃的这个写法啊,然后下边呢,就是我们这个下边要提到一个叫方法引用。
08:02
啊的一个写法,这个呢就更简洁了,只要呢,你看到这个符号呢,这就是方法引用了,看到这种符号,这就是拉姆达表达式,啊这肯定呢还是有疑惑的,那我们接下来呢,就得展开去说,这个拉曼达表达式对大家这一章哈新特性的要求是什么呢?大家尽可能的下来呢去练一练,写一写。你说不要求大家非得说开发中要这样写,因为你完全还可以按原来的方式写啊,没有要求大家非得这样去写,或者说像这样去写,但至少呢,你尽可能能看得懂。但是你要能看得懂呢,跟会写其实也差不多了,其实是吧啊,但是难度还是要稍微低一点啊,哎,为啥非得要求大家能看得懂呢?因为呢,后续一些新的框架啊,你像这个Spark里边底层的一些框架呢,你看源码的时候呢,你会看到它用到了,诶JAVA8里边的这个拉姆达表达式啊,那你要想看源码能看得懂,你不得知道拉姆达表达式是啥意思吗?哎,就这个点啊,嗯,至于说我们自己写代码的时候呢,大家你诶看看公司当中项目经理说咱们都是用张二八的行,那你就可以用,他说用咱们是张二七的啊,咱们这个是张二七,那就别写了啊,因为写了他也跑不了是吧?哎,就这么个点啊,当然另外还有一个好处呢,就是你可以作为一个炫的一个手段是吧,你这样一写,旁边一问说诶,这个是什么东西呢?你来一句这都不知道吗?这不是个新特性嘛是吧?啊对,就用来装逼的是吧?啊就这个点啊,尽可能大家能看得。
09:38
懂啊,看源码的时候能看得懂就行,至于说你要不要用,哎,看情况是吧,好,这呢是我们的一个举例啊。
我来说两句