ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Lambda表达式

2021-01-28 15:01:39  阅读:162  来源: 互联网

标签:love like -- println Lambda out 表达式 lambda


什么是lambda表达式?Lambda表达式,也可以称为闭包,它是推动Java8发布的最重要的新特新;其实呢,lambda表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现函数式接口定义的唯一抽象方法,在使用lambda表达式时,会创建一个实现了函数式接口的一个匿名类实例,可以将lambda表达式视为一个对象,可以将其作为参数传递;

为什么要使用lambda表达式?

  • 可以避免匿名内部类定义过多

  • 可以让你的代码看起来很简洁

  • 去掉了一堆没有意义的代码,只留下核心的逻辑

何为函数式接口?

  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数时接口,例如:线程中的Runnable接口

  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。

下面来推导一下lambda表达式;

package com.hp.lambda;
 ​
 /**
  * @author: 金州拉文
  * @date 2021/1/27 11:53
  **/
 //lambda表达式推导
 public class TestLambda1 {
     //3.静态外部类
     static class Like2 implements ILike{
         @Override
         public void lambda() {
             System.out.println("i like lambda-->2");
         }
     }
     public static void main(String[] args) {
         ILike like = new Like();
         like.lambda();
         like = new Like2();
         like.lambda();
         
         //4.局部内部类
         class Like3 implements ILike{
             @Override
             public void lambda() {
                 System.out.println("i like lambda-->3");
             }
         }
         like = new Like3();
         like.lambda();
 ​
         //5,匿名内部类,没有类的名称,必须借助接口或者父类
         like = new ILike(){
             @Override
             public void lambda() {
                 System.out.println("i like lambda-->4");
             }
         };
         like.lambda();
         //6.lambda简化
         like=()->{
             System.out.println("i like lambda-->5");
         };
         like.lambda();
     }
 }
 //1.定义一个函数式接口
 interface ILike{
     void lambda();
 }
 //2.实现类
 class Like implements ILike{
     @Override
     public void lambda() {
         System.out.println("i like lambda-->1");
     }
 }

运行结果:

下面来简化一下lambda表达式

 package com.hp.lambda;
 ​
 /**
  * @author: 金州拉文
  * @date 2021/1/27 12:11
  **/
 //lambda表达式简化
 public class TestLambda2 {
     public static void main(String[] args) {
         //1.lambda表达式简化
         ILove love=(int a)->{
             System.out.println("i love you-->"+a);
         };
         love.lambda(1);
         //2.简化参数
         love=(a)->{
             System.out.println("i love you-->"+a);
         };
         love.lambda(2);
         //3.简化括号
         love=a -> {
             System.out.println("i love you-->"+a);
             System.out.println("i love you-->too");
         };
         love.lambda(3);
         //4.去掉花括号
         love=a -> System.out.println("i love you-->"+a);
         love.lambda(4);
         /*
         * love=(a,b) -> System.out.println("i love you-->"+a+b);
         love.lambda(4,4);*/
     }
 }
 interface ILove{
     void lambda(int a);
     //void lambda(int a,int b);
 }
 class Love implements ILove{
     @Override
     public void lambda(int a) {
         System.out.println("i love you-->"+a);
     }
 }

运行结果:

总结:

  • lambda表达式只能由一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹

  • 前提是接口为函数式接口

  • 多个参数也可以去掉参数类型,但是要统一,如果去掉就都去掉,必须要加上括号

标签:love,like,--,println,Lambda,out,表达式,lambda
来源: https://www.cnblogs.com/Nick62/p/14339858.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有