Lamda语法(学习笔记)

Lamda语法

基本

  1. λ 希腊字母表中排序第十一位的字母,英语名称为 Lamda

  2. 避免匿名内部类定义过多

  3. 可以让你的代码看起来很简洁

  4. 去掉了一堆没有意义的代码,留下核心的逻辑

  5. 其实质属于函数式编程的概念

(params)-> expression[表达式] (params) -> statement[语句] (params) -> {statements}

理解Functional interface(函数式接口)是学习java8 lamda表达式的关键所在。

函数式接口的定义:

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

对于函数式接口,我们可以通过lamda表达式来创建该接口的对象

代码推导

/**
 * 推导lamda表达式
 */
​
//定义一个函数式接口
interface  IPerson{
    void person();
}
interface IMan{
    void man(String name);
}
​
​
//定义一个实现类
class PersonFirst implements IPerson{
​
    @Override
    public void person() {
        System.out.println("I am a Firstperson");
    }
}
public class Lamda {
    //静态内部类
    static class PersonSecond implements IPerson{
​
        @Override
        public void person() {
            System.out.println("I am a Secondperson");
        }
    }
    public static void main(String[] args) {
        IPerson person = new PersonFirst();
        person.person();
​
        person = new PersonSecond();
        person.person();
        //局部内部类
        class PersonThird implements IPerson{
​
            @Override
            public void person() {
                System.out.println("I am a Thirdperson");
            }
        }
​
        person = new PersonThird();
        person.person();
        //匿名内部类 没有类的名称 借助接口或父类
        person = new IPerson() {
            @Override
            public void person() {
                System.out.println("I am a Forthperson");
            }
        };
        person.person();
​
        //用Lamda简化(无参数)
        person = ()->{
            System.out.println("I am a Fifthperson");
        };
        person.person();
​
        //用lamda简化(有参数)
//        IMan man = (String name)->{
//            System.out.println(name);
//        };
//        man.man("z");
        //简化参数类型
//        IMan man = (name)->{
//            System.out.println(name);
//        };
//        man.man("z");
        //简化括号
//        IMan man = name->{
//            System.out.println(name);
//        };
//        man.man("z");
        //简化{} 代码有多行无法省略{}
        IMan man = name->
            System.out.println(name);
        man.man("z");
​
​
    }
​
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值