JDK8新特性——Lambda表达式

Lambda表达式

  • 举例: (o1,o2) -> Integer.compare(o1,o2)

  • 格式:

    • -> : Lambda操作符或者箭头操作符
    • -> 左边 : 重写方法的形参
    • -> 右边 : 重写方法的方法体
  • 使用:分6种情况(见代码)

    • -> 左边 : Lambda表达式的形参类型可省略(类型推断),如果只有一个形参时"()"可以省略
    • -> 右边 : Lambda表达体应用"{}“包起来,如果方法体只有一条语句(可能时return语句),”{}"可以不写return也不写
  • 本质:作为函数式接口的实例

  • 用途:所有匿名内部类的表达式现在都可以用Lambda表达式来写

    @Test
        //方式一:无参数且无返回值
        public void test1(){
            Runnable r1 = new Runnable() {
                @Override
                public void run() {
                    System.out.println("欢迎来到80年代");
                }
            };
            r1.run();
            System.out.println("**************");
            Runnable r2 = () -> System.out.println("欢迎来到90年代");
            r2.run();
        }
    
        @Test
        //方式二:有一个参数,无返回值
        public void test2(){
            Consumer<String> consumer = new Consumer<String>() {
                @Override
                public void accept(String s) {
                    System.out.println("你好" + s);
                }
            };
            consumer.accept("中国");
            System.out.println("**************");
            Consumer<String> consumer1 = (String s) -> System.out.println("你好" + s);
            consumer1.accept("China");
        }
    
        @Test
        //方式三:类型推断,带有泛型的可以省略
        public void test3(){
            Consumer<String> consumer1 = (s) -> System.out.println("你好" + s);
            consumer1.accept("China");
        }
    
        @Test
        //方式四:只有一个参数,小括号可以不写
        public void test4(){
            Consumer<String> consumer1 = s -> System.out.println("你好" + s);
            consumer1.accept("China");
        }
    
        @Test
        //方式五:有多个参数
        public void test5(){
            Comparator<Integer> c1 = new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return Integer.compare(o1,o2);
                }
            };
    
            System.out.println(c1.compare(12, 21));
            System.out.println("**************");
    
            Comparator<Integer> c2 = (o1,o2) -> {
                System.out.println(o1);
                System.out.println(o2);
                return Integer.compare(o1,o2);
            };
            System.out.println(c2.compare(32,21));
        }
    
        @Test
        //方式六:右边只有一条语句{}可以不写,如果有return,return也不写
        public void test6(){
            Comparator<Integer> c2 = (o1,o2) -> Integer.compare(o1,o2);
            System.out.println(c2.compare(32,21));
        }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值