Java学习之Lambda表达式的深入理解和使用

1、lambda表达式

  • 避免匿名内部类定义过多
  • 其实质是属于函数式编程的概念
    • (params)-> expression[ 表达式 ]
    • (params)-> statement[语句 ]
    • (params)-> {statements}

2、函数式接口

  • 任何接口、如果只包含唯一一个抽象方法,那么它就是一个函数式接口

    public interface Runnable{
        public abstract void run();
    }
    
  • 对于函数式接口,可以通过lambda表达式来创建该接口的对象

3、演化进程

//函数式接口
public interface Person {
    void speak(String str);
}
//方式一: 接口实现类
class p1 implements Person{

    @Override
    public void speak(String str) {
        System.out.println(str);
    }
}

public class LanmbdaTest {
    //方式二:静态内部类
    static class p2 implements Person{

        @Override
        public void speak(String str) {
            System.out.println(str);
        }
    }
    public static void main(String[] args) {
        //方式三:局部内部类
        class p3 implements Person{

            @Override
            public void speak(String str) {
                System.out.println(str);
            }
        }
        
        Person p1 = new p1();
        p1.speak("1");
        
        Person p2 = new p2();
        p2.speak("2");

        Person p3 = new p3();
        p3.speak("3");
        
        //方式四:匿名内部类
        Person p4 = new Person() {
            @Override
            public void speak(String str) {
                System.out.println(str);
            }
        };
        
        p4.speak("4");
        //方式五:lambda表达式
        Person p5=(String str)->{
            System.out.println(str);
        };
        p5.speak("5");

    }
}


4、Lambda的简化

public class LambdaTest2 {
    public static void main(String[] args) {
        //常态
        Person p1 = (String str) -> {
            System.out.println(str);
        };
        //简化1:去掉类型
        Person p2 = (str) -> {
            System.out.println(str);
        };
        //简化2:去掉括号
        Person p3 = str -> {
            System.out.println(str);
        };
        //简化3:去掉花括号
        Person p4 = str -> System.out.println(str);
        
        p1.speak("1");
        p2.speak("2");
        p3.speak("3");
        p4.speak("4");

    }
}
  • 总结

    • lambda 表达式只有一行代码的情况下,才能简化成一行。多行的时候得用{ }包裹

      p = str->{
           System.out.println(str);
           System.out.println(str);
      }
      
    • lambda表达式才多参数的时候,也可以去掉参数类型,去掉就得都去掉。

    • lambda表达式只有一个参数的情况下,才能去掉括号。多参数的时候得加上括号

      p = (str1,str2)->{
           System.out.println(str1);
           System.out.println(str2);
      }
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值