Java Lambda表达式

  1. 为什么使用lambda表达式

    • 避免匿名内部类定义过多
    • 简化代码
  2. 函数式接口

    一个接口如果只包含一个抽象方法,就是函数式接口。

    interface Move{
        void action(int a,String b);
    }
    
  3. lambda表达式的形式

    (para1,para2,...)->{
        具体操作...
    };
    
  4. 对比学习lambda表达式

    public class TestLambda {
        static class DoSomething2 implements Action{
            @Override
            public void say() {
                System.out.println("2.静态内部类");
            }
        }
        public static void main(String[] args) {
            // 外部类,创建对象,调用方法
            Action action = new DoSomething();
            action.say();
    
            // 静态内部类
            action = new DoSomething2();
            action.say();
    
    
            class DoSomething3 implements Action{
                @Override
                public void say() {
                    System.out.println("3.局部内部类");
                }
            }
            // 局部内部类
            action = new DoSomething3();
            action.say();
    
            //匿名内部类
            action = new Action() {
                @Override
                public void say() {
                    System.out.println("4.匿名内部类");
                }
            };
            action.say();
    
            //lambda表达式
            action = () -> {
                System.out.println("5.lambda表达式");
            };
            action.say();
    
        }
    }
    // 定义一个函数式接口,只能有一个抽象方法
    interface Action{
        void say();
    }
    class DoSomething implements Action{
        @Override
        public void say() {
            System.out.println("1.外部类实现接口");
        }
    }
    

    根据上面的代码,可以用不同方式实现接口的方法。但是很明显,lambda表达式更加简洁。

  5. lambda表达式的语法进一步简化

    • 去掉参数的类型(如果要去掉就去掉所有参数的类型)
    • 只有一个参数的,可以去掉括号(同时可以去掉参数类型)
    • 表达式只有一行的,可以去掉大括号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值