java8新特性之lambda表达式

python属于函数式编程思维,lambda表达式在里面是函数,但是java提倡"万事万物皆对象",借鉴了该写法,但是lambda表达式在java中是对象而不是函数.

public interface MyInterface {
    void testMethod();
}

class MyClass implements MyInterface {

    @Override
    public void testMethod() {
        System.out.println("我重写了接口中的testMethod方法!耶!");
    }
}

class Test {
    public static void main(String[] args) {
        //创建接口类的对象
//        MyInterface mc=new MyClass();
//        mc.testMethod();

        //利用匿名内部类,创建接口实现类的对象
        MyInterface mif = new MyInterface() {
            @Override
            public void testMethod() {
                System.out.println("利用匿名内部类重写了Method的方法!耶");
            }
        };
        mif.testMethod();

        //利用lambda表达式:创建皆苦实现类的对象
        MyInterface mif2 = () -> System.out.println("利用lambda表达式重写Method的方法!耶!");
        mif2.testMethod();
    }
}
2.语法:

Lambda表达式
本质:java中接口的一个实例!(接口的实现类的具体的对象)

在这里插入图片描述
-> :箭头操作符 lambda操作符
->左侧:lambda形参列表 等价于 接口中的抽象方法的形参列表
->右侧: 重写方法的方法体的具体内容
总结:
->左面:
(1)参数类型可以省略不写!(类型自动判断)
(2)如果只有一个参数,()可以省略不写
->右面:
(!){}将方法体的具体内容包裹起来
(2)只有一个方法体执行语句的话,{}可以省略不写
(3)如果一句执行语句是return语句,return可以省略不写

3.具体格式:
  • 格式1:无参,无返回值;在这里插入图片描述
    如果方法体中包含有多个语句,那么->右侧的{}必须要加上;
    如果方法体中只有一个语句,那么{}可以省略不写.
  • 格式2:有一个参数,无返回值
    在这里插入图片描述
    lambda表达式的参数类型可以省略;在这里插入图片描述
    如果参数只有一个,那么可以不写括号;在这里插入图片描述
  • 格式3:有两个或者两个以上的参数,执行语句多条,并且有返回值在这里插入图片描述
  • 多个参数的时候()不能省略
  • 多个执行语句{}不能省略
  • 方法体就一句话,并且这一句话是:return+返回值;那么return和{}都可以省略不写在这里插入图片描述
    既然lambda表达式是接口的实现类的对象,对该接口有什么要求吗?
    要求这个接口必须只有一个抽象方法,只有一个抽象方法的接口叫做函数式接口.
    函数式接口:
    (1)只有一个抽象方法
    (2)jdk8以后可以有非抽象方法
    IDEA配置lambda表达式在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴成伟0122

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值