首页 > 编程语言 > 详细

Java Lambda 表达式

时间:2021-02-21 23:56:24      阅读:29      评论:0      收藏:0      [点我收藏+]

lambda表达式

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


2. 格式
  -> :lambda操作符或者箭头操作符
  ->左边 :lambda形参列表(其实就是接口中的抽象方法的形参列表)
  ->右边 :lambda体(其实就是重写的抽象方法的方法体)

3.lambda表达式的本质:作为函数式接口实现类的实例

4.lambda表达式的使用:
分几种情况:

public class Lambda01 {

    @Test
    public void test01(){
        // 无参数,无返回值
        Runnable run = ()-> System.out.println("无返回值");
        run.run();

        // 有参数,无返回值(数据类型可省略,有接口可推断出类型)
        Consumer<String> consumer = (s) -> {System.out.println(s);};
        consumer.accept("有参数,无返回值");

        // 若只有一个参数,参数的小括号可省略
        Consumer<String> consumer1 = s -> {System.out.println(s);};
        consumer.accept("省略小括号");

        // 可以有两个或以上的参数,多条执行语句,而且可以有返回值
        //传统匿名内部类写法
        Comparator<Integer> comparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        };
        // lambda写法
        Comparator<Integer> comparator1 = (o1, o2) -> {
            System.out.println(o1);
            System.out.println(o2);
           return o1.compareTo(o2);
        };
        System.out.println(comparator1.compare(12, 21));

        // 当lambda体只有一条语句时,return 与大括号都可以省略
        Comparator<Integer> comparator2 = (o1, o2) -> o1.compareTo(o2);
        System.out.println(comparator2.compare(22, 21));
    }


总结:
  ->左边:lambda形参列表类型可以省略(类型推断),如果lambda形参只有一个参数,可以省略括号
  ->右边:lambda体应该使用一对{}包裹,如果lambda体只有一条执行语句(可能是return语句),大括号和return都可以省略。

5.函数式接口
如果一个接口只有一个抽象方法,那么该接口就是函数式接口
可通过lambda表达式来创建该接口的对象

Java一直倡导“一切皆对象”
6.所以以前用匿名实现类表示的现在都可以用lambda表达式来写

 

7.函数式接口
java内置四大核心函数式接口

技术分享图片

 

Java Lambda 表达式

原文:https://www.cnblogs.com/yaoqingzhuan/p/14425676.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!