保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

Lambda表达式

  1。函数式编程思想面向对象强调:万物节皆对象,我们做任何事情都需要通过对象函数式编程思想强调:尽量忽略面向对象的复杂语法,强调做什么,而不是通过什么去做所以,我们先来完成一个简单的案例,感受下Lambda表达式是如何直击要点的2。案例引入
  需求:在多线程场景下,在控制台输出:多线程程序启动啦
  思路1:创建自定义多线程类实现Runnble接口,创建对象启动
  思路2:优化使用匿名内部类的方式来完成
  思路3:使用Lambda表达式来完成
  packagecn。cxy。lambda;
  本类用于Lambda表达式入门
  需求:在多线程场景下,在控制台输出:多线程程序启动啦
  publicclassLambdaDemo{
  publicstaticvoidmain(String〔〕args){
  2。创建目标业务类对象
  MyRunnabletargetnewMyRunnable();
  3。将目标业务类对象作为Thread类的构造参数传入
  ThreadtnewThread(target);
  4。启动线程
  t。start();
  方案二:改进:使用匿名内部类的方式:
  5。使用匿名内部类的方式改进
  newThread(newRunnable(){
  Override
  publicvoidrun(){
  System。out。println(多线程程序2启动啦);
  }
  })。start();
  方案三:继续改进:使用Lambda表达式的方式:
  newThread((){
  System。out。println(多线程程序3启动啦);
  })。start();
  }
  }
  实现方案1:以接口实现类的方式实现
  1。定义多线程类实现Runnable接口,重写run()
  classMyRunnableimplementsRunnable{
  Override
  publicvoidrun(){
  System。out。println(多线程程序启动啦);
  }
  }3。Lambda表达式的标准格式
  我们先来分析下以匿名内部类方式编写代码的格式:方法参数列表处的参数为空,说明本方法执行时不需要传参方法的返回值类型为void,说明这个方法的执行并没有返回结果方法体中的内容才是我们具体要做的业务
  我们再来分析下以Lambda表达式方法编写代码的格式:()里面没有内容,我们可以把它看作是方法执行时不需要传参数,参数为空:用箭头表示我们即将要做的事,也就是具体要做的业务{}:我们可以把它看作是一个代码块代表了之前我们在方法体中需要写的业务内容
  总结:Lambda表达式的标准格式为:(方法的形式参数){方法体}
  1)如果有多个参数,参数之间用逗号隔开,如果没有参数,小括号里面为空
  2)是一个固定的标准写法,使用的符号都是英文的,代表我们指向要操作的动作
  3){}里是我们具体要完成的业务,也就是我们方法的方法体
  注意Lambda表达式的前提:接口接口中有且仅有一个抽象方法4。1案例练习1:抽象方法无参数无返回值时:
  创建接口:Animal
  packagecn。cxy。lambda;
  1。定义接口
  publicinterfaceAnimal{
  2。定义接口中没有参数也没有返回值的抽象方法
  voideat();
  }
  创建接口的实现类:AnimalImpl
  packagecn。cxy。lambda;
  3。创建接口的实现类并实现方法
  publicclassAnimalImplimplementsAnimal{
  Override
  publicvoideat(){
  System。out。println(小动物吃啥都行);
  }
  }
  创建测试类:TestAnimal
  packagecn。cxy。lambda;
  4。创建测试类
  publicclassTestAnimal{
  publicstaticvoidmain(String〔〕args){
  方案1:创建接口实现类对象调用
  6。1创建接口的实现类对象【多态对象】
  AnimalanewAnimalImpl();
  6。2调用本类的getAnimal(),并把刚刚创建的多态对象传入
  getAnimal(a);小动物吃啥都行
  方案2:使用匿名内部类的方式来调用
  7。直接调用getAnimal(),参数处以创建匿名内部类的方式来完成
  getAnimal(newAnimal(){
  Override
  publicvoideat(){
  System。out。println(小动物现在都想吃小苹果);
  }
  });
  方案3:使用Lambda表达式来完成
  eat()没有参数,小括号为空,指向eat()里实际要执行的一句打印语句
  getAnimal((){
  System。out。println(Lambda表达式的方式,小动物们都惊呆了);
  });
  }
  5。创建测试类中的方法getAnimal()
  publicstaticvoidgetAnimal(Animala){
  a。eat();
  }
  }4。2案例练习2:抽象方法有参数无返回值时:
  创建接口:Fruit
  packagecn。cxy。lambda;
  1。创建接口
  publicinterfaceFruit{
  2。创建接口中带参数的抽象方法
  voidgetKind(Strings);
  }
  创建接口测试类FruitImpl:
  packagecn。cxy。lambda;
  3。创建接口的实现类并实现抽象方法
  publicclassFruitImplimplementsFruit{
  Override
  publicvoidgetKind(Strings){
  System。out。println(参数s是:s);
  System。out。println(我是一个大桃子);
  }
  }
  创建测试类TestFruit:
  packagecn。cxy。lambda;
  4。创建测试类进行测试
  publicclassTestFruit{
  publicstaticvoidmain(String〔〕args){
  方案1:创建接口实现类对象调用
  6。1创建接口的实现类对象【多态对象】
  FruitfnewFruitImpl();
  6。2调用本类的getFruit(),并把刚刚创建的多态对象传入
  getFruit(f);
  方案2:使用匿名内部类的方式来调用
  7。直接调用getFruit(),参数处以创建匿名内部类的方式来完成
  getFruit(newFruit(){
  Override
  publicvoidgetKind(Strings){
  System。out。println(参数s是:s);
  System。out。println(我是一个大橙子);
  }
  });
  方案3:使用Lambda表达式来完成
  eat()没有参数,小括号为空,指向eat()里实际要执行的一句打印语句
  getFruit((Strings){
  System。out。println(参数s是:s);
  System。out。println(我是一颗大草莓);
  });
  }
  5。创建测试类的方法,需要传入接口对象,并且调用接口的功能
  publicstaticvoidgetFruit(Fruitf){
  f。getKind(猜猜我是什么水果?);
  }
  }4。3案例练习3:抽象方法有参数有返回值时:
  创建接口:Student
  packagecn。cxy。lambda;
  1。创建接口
  publicinterfaceStudent{
  2。创建接口中带参数并且有返回值的抽象方法
  intscoreCount(inta,intb,intc);
  }
  创建接口的实现类:
  packagecn。cxy。lambda;
  3。创建接口的实现类并实现抽象方法
  publicclassStudentImplimplementsStudent{
  Override
  publicintscoreCount(inta,intb,intc){
  returnabc;
  }
  }
  创建测试类TestStudent:
  packagecn。cxy。lambda;
  4。创建测试类进行测试
  publicclassTestStudent{
  publicstaticvoidmain(String〔〕args){
  方案1:创建接口实现类对象调用
  6。1创建接口的实现类对象【多态对象】
  StudentsnewStudentImpl();
  6。2调用本类的getFruit(),并把刚刚创建的多态对象传入
  getScore(s);
  方案2:匿名内部类的方式来调用也不简单,故此直接使用Lambda表达式来完成:
  调用本方法时,将下方的参数607080作为参数传入
  7。直接使用Lambda表达式进行优化
  getScore((intx,inty,intz){
  returnxyz;scoreCount()正常返回方法的返回值,交给下方的score变量来保存
  });
  }
  5。创建测试类的方法,需要传入接口对象,并且调用接口的功能
  publicstaticvoidgetScore(Students){
  intscores。scoreCount(60,70,80);
  System。out。println(总分为:score);
  }
  }5。Lambda表达式的省略模式
  1。在TestStudent测试类中,我们来学习Lambda表达式的简写形式1:
  Lambda表达式的省略模式1:
  参数的类型可以省略,但注意,如果有多个参数,不能只省略一个
  getScore((intx,inty,intz){之前的写法
  getScore((x,inty,intz){会报错
  getScore((x,y,z){现在省略了所有参数的类型
  returnxyz;scoreCount()正常返回方法的返回值,交给下方的score变量来保存
  结论:参数的类型可以省略,但注意,如果有多个参数,不能只省略一个
  2。在TestFruit测试类中,我们来学习Lambda表达式的简写形式2:
  Lambda表达式的省略模式2:
  如果方法的参数有且只有一个,参数的小括号可以省略
  getFruit((Strings){之前的写法,现在省略的参数的类型与小括号
  getFruit(s{
  System。out。println(参数s是:s);
  System。out。println(我是一颗大草莓);
  });
  结论:如果方法的参数有且只有一个,参数的小括号可以省略
  3。在TestAnimal测试类中,我们来学习Lambda表达式的简写形式3:
  Lambda表达式的省略模式3:
  如果大括号里的方法体只有一句,可以省略大括号和分号
  getAnimal(()
  System。out。println(Lambda表达式的方式,小动物们都惊呆了)
  );
  结论;如果大括号里的方法体只有一句,可以省略大括号和分号
  4。在TestStudent测试类中,我们来学习Lambda表达式的简写形式4:
  Lambda表达式的省略模式4:
  如果方法体只有一句,大括号与分号可以省略
  除此之外,如果方法用关键字return返回返回值,return也需要一起省略掉
  getScore((x,y,z)xyz);
  结论;如果方法体里有return用来返回返回值,return也需要一起省略掉6。Lambda表达式的注意事项:
  1。必须是有一个接口,并且接口中只有一个抽象方法时使用
  2,使用表达式时必须要有上下文环境推导出Lambda实际代表的接口
  packagecn。cxy。lambda;
  publicclassTestLambda{
  publicstaticvoidmain(String〔〕args){
  方式1:匿名内部类
  newThread(newRunnable(){
  Override
  publicvoidrun(){
  System。out。println(线程启动啦);
  }
  })。start();
  方式2:Lambda表达式写法1:根据局部变量r的类型推导出Lambda代表的接口
  Runnabler()System。out。println(用引用类型变量推断Lambda表示的是哪个接口);
  newThread(r)。start();
  方式3:Lambda表达式写法2:根据调用Thread(Runnable)方法的参数类型推导出Lambda代表的接口
  newThread(()System。out。println(Lambda方式线程启动啦))。start();
  }
  }
  3。匿名内部类与Lambda表达式的区别使用场景:
  1)不论被调用方法的参数是接口抽象类实体类,匿名内部类的形式均可以使用
  但是Lambda表达式只能是被调用方法参数为接口的时候使用
  2)不论接口里有几个抽象方法,都可以使用匿名内部类的形式
  但是Lambda表达式只支持接口中有且仅有一个抽象方法的情况
  3)实现原理不同:匿名内部类生效后会多产生一个额外单独的内部类字节码文件
  而Lambda表达式只有一个字节码文件
  创建接口:
  packagecn。cxy。lambda;
  1。创建接口与接口中的抽象方法
  publicinterfaceInter{
  voideat();
  }
  创建抽象类:
  packagecn。cxy。lambda;
  2。创建抽象类与抽象类中的方法
  publicabstractclassabstractClass{
  abstractvoidsleep();
  publicvoidsleep2(){
  System。out。println(一天要睡够8小时哦);
  }
  }
  创建普通类:
  java
  packagecn。cxy。lambda;
  3。创建普通实体类与类中的方法
  publicclassnormalClass{
  publicvoidplay(){
  System。out。println(最爱玩的就是代码啦);
  }
  }
  创建测试类:
  packagecn。cxy。lambda;
  publicclassTestAnonymousAndLambda{
  publicstaticvoidmain(String〔〕args){
  useFunction1(newInter(){
  Override
  publicvoideat(){
  System。out。println(吃火锅);
  }
  });
  useFunction2(newabstractClass(){
  Override
  voidsleep(){
  System。out。println(睡10个小时吧);
  }
  });
  useFunction3(newnormalClass(){
  Override
  publicvoidplay(){
  System。out。println(代码写累了,完会游戏吧);
  }
  });
  useFunction1(()System。out。println(我是接口形式));
  useFunction2(()System。out。println(我是抽象类的形式));会报错,不支持抽象类
  useFunction3(()System。out。println(我是普通实体类的形式));会报错,不支持普通类
  }
  publicstaticvoiduseFunction1(Interi){
  i。eat();
  }
  publicstaticvoiduseFunction2(abstractClassa){
  a。sleep();
  }
  publicstaticvoiduseFunction3(normalClassn){
  n。play();
  }
  }

为啥白头发越长越多?你以为是老了,医生或是缺乏这几种营养素老公,我白头发又出来了,我买了染发膏,你给我染一下吧!你这年纪轻轻的,怎么这么多白头发,每个月都得染,我觉得你还是别染了,越染对身体越不好,白头发越来越多,还掉头发。……西安兵马俑作文在一个风和日丽的早上,我和老妈在西安城内跟一日游去观兵马俑,举名于世的兵马俑属于世界第8大奇迹。今力了两个小时的车程,我们终于到了兵马俑博物馆。在导游的讲解下我大致了解到……新学期初中作文一个漫长的暑假已过去,迎来的是一个美好的秋天。在这冰天雪地的季节里,新的一学期又开始了,迎着早晨的第一缕阳光,我们又重新回到美丽的校园,开始了新一学期的征途。我步入神圣的初中的……whatahappyday英语作文带翻译在生活中,那一天让你感觉特别开心呢?大家不妨写一篇关于whatahappyday的英语作文,和大家分享一下吧。下面是品学网小编为大家精心挑选的带翻译的whatahappyday……黄芪对肝脏肾脏有什么好处?能抗癌吗?黄芪配西洋参有什么功效谣零零计划黄芪为豆科植物蒙古黄芪或膜荚黄芪的干燥根,其味甘,性微温,归脾、肺经,具有补气升阳,固本止汗,健脾利水,脱毒排脓,生肌之功效。此外,黄芪通过补气又能生血、摄血、……全球肥料需求刚性化肥产业迎来新发展机遇公司研究俗话说:庄稼一枝花,全靠肥当家。化肥是农业生产中必不可少的生产资料,甚至被称为粮食的粮食。WIND数据显示,自2020年下半年以来,全球农产品需求强劲复苏,国际市场小麦、玉米、……静下来的苏家坨,有更多期待海淀区全域提级管控之后苏家坨镇全面静下来慢下来楼宇园区内没有了忙忙碌碌公园景区里看不到人潮涌动商业街道上减少了人来人往超市内三两……登高定都阁,远眺京城阔京城时有蓝天,从长安街或莲石路上向西眺望,经常可以清晰地看到高高的上山有座古建,经过打听才知叫做定都阁,今儿又赶上蓝天白云,走登高去这座定都阁位于京西门头沟区内潭柘寺镇,……南极冰盖下有啥东西?俄罗斯钻探20年,地下4000米处有了神世界之大,无奇不有,尽管现在我们人类已经站在了食物链的顶端,但依然有很多未知的谜团,如果想要将这些谜团全部破解,似乎是痴人说梦。根据科学家们的估算,现在地球已经存在了45……101光年外发现宜居星球!大小与地球相当,有可能存在生命吗?地球作为一颗行星孕育出了生命,那么地球之外的其他天体可以孕育生命吗?对于这个问题,科学家也在不断地探索,希望可以找到外星文明,或者是找到可以宜居的系外星球。米歇尔麦耶(左……一件事改变了我七年级作文一件事改变了我天空哭泣,又打着哈欠。我们坐在教室里等着那放学铃声的响起,外面己是人山人海,雨伞多的可以开雨伞花式争夺赛不。终于,铃声响起。等老师布置完作业。我们就像一头头饥饿的……关于健康和养生方面的八个知识1、饮食原则养生分为内在养生和外在养生,内在养生其实说的就是饮食方面的调养。只有吃的东西有益于身体的健康,才会促进身体机能的正常运转。主要的饮食原则有以下几点,一是平时要……
我最喜欢的玩具作文400字今年暑假,我和妈妈一起整理房间时,偶然发现了小木箱中的一个宝贝mdash;mdash;ldquo;万花筒rdquo;。这可是我童年生活中最喜爱的一个玩具!因为那是爸爸亲手给我做……梁宁老师分享381页完整版这是两名老师写的【产品思维30讲】课程,目前全网有近33万同学在学习这课程。几乎所有互联网大佬,新品牌的创业者,都自称自己是产品经理。为什么这个身份如此重要,这门课给你答……在父母呵护下成长作文一直在呵护我们成长的人是我们的父母啊!下面在父母呵护下成长作文是小编想跟大家分享的,欢迎大家浏览。在父母呵护下成长作文一从小,有个人在我们身边培养我们,那就是我们的父母了……帮助别人是种快乐作文450字那是上个星期发生的事了,那天放学值完日后我就和齐元坤一起回家,我们一路走一路说笑。走到牛肉面门口,感觉脚下踩到了一个什么东西,我捡起来一看,原来是一本驾照。回到家我赶紧拿……小蜜蜂奇遇记四年级作文400字从前,有一只蜜蜂,它的名字叫乐乐。它并不像其他蜜蜂一样勤劳,而是每天在花园裏玩耍。它的妈妈常常对它说其他蜜蜂都十分勤劳,只有你每天只顾着玩耍和吃东西。有一天,乐乐实在受不了妈妈……记忆犹新的一天议论文从小到大,我有许许多多的欢乐,欢乐无尽头!但是,在这一天中,让我最快乐,最难以忘怀了我有一个朋友,因为调高摔断了胳膊,听了这个噩耗之后,我的心情燃着熊熊烈火,无法扑灭,他……初一作文大连的海现在,我凝望着大连的海。海清澈得让人惊奇和讶异。当一缕缕浅浅的夏日海风踩着柔软的步子走过时,那清澈的海便被掀起一层层的微微水波,像在昭示,又像是在诱惑,让人不由得沉迷其中……实用我学会了小学作文500字4篇在日常学习、工作和生活中,大家都有写作文的经历,对作文很是熟悉吧,作文根据体裁的不同可以分为记叙文、说明文、应用文、议论文。怎么写作文才能避免踩雷呢?以下是小编为大家整理的我学……感恩父母中学生优秀作文我们身边有许许多多感动人心的故事,这一个,令我不禁热泪盈眶。有这样一家人,在农村里,本来的生活很甜美、幸福。但一场车祸夺去了爸爸的生命。妈妈为此遭到了沉重的打击,家庭的重……国米再夺冠,接手国米1年连夺3冠,张康阳赚多少钱?数字令人意近日在意大利足球比赛的赛场上,国际米兰和尤文图斯展开了激烈的争斗,最终国际米兰以4:2的比分战胜了尤文图斯,获得了意大利杯的冠军,时隔11年之后,国际米兰再一次捧起冠军奖杯,而……重温喜宝才发现,原来,这才是喜宝不要勖先生财产的真正原因文丨听雪说影第一次看《喜宝》,来源于某音的一首歌曲,已经不记得它的歌名了,只记得音乐响起,那优美的旋律与动人的画面,一下子就打动了自己。在悦耳动听的音乐里,女人相貌……Excel向左查询数据,这2组函数轻松搞定,比vlookup数据查询匹配,相信多数人都会立刻想到一个函数,那就是vlookup函数,vlookup函数在Excel函数中是一个使用频率非常高的查询类函数。但vlookup函数实操中也有自己……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网