最简Lambda表达式()->{}推导

时刻保持学习之心,方能成就不世功业
Lambda表达式 如何使用仅代表本人学习经验,如有不正确处,希望你我共同学习;
在学习Java中,Lambda表达式对我们之后的学习与应用有很大的作用,今天我们就来简单的推导Lambda表达式是如何出来的;
写在前面 在使用Lambda表达式中我们需要注意:Lambda 只能针对的是函数式接口,在定义接口的时候,其中只能有一个实现的方法,其本质就是函数式编程
Lambda表达式 是匿名内部类的又一种升华,这种表达式的使用是在Jdk8之后,所添加的新特性;
简单推到----> 我们将通过实例代码来分析,如何一步步将四大内部类(成员内部类、局部内部类、静态内部类、匿名内部类),代码中已有详细解释,请爱学习的你,适度恰饭 -----

//Lambda表达式的演化
//    lambda表达式只是针对的是函数式接口
public class TestLambda {
    //    静态内部类
    static class ISayHello2 implements sayHello {

        @Override
        public void sayHelloWorld() {
            System.out.println("Hello,world--->2");

        }
    }

    public static void main(String[] args) {
//        局部内部类
        class ISayHello3 implements sayHello {

            @Override
            public void sayHelloWorld() {
                System.out.println("Hello,World---->3");
            }
        }
//        匿名内部类,没有类的名称必须借助接口和父类
        sayHello Hello = new sayHello() {
            @Override
            public void sayHelloWorld() {
                System.out.println("Hello,World---->4");
            }
        };
//        lambda表达式实现
        sayHello hello = () -> {
            System.out.println("Hello,World---->5");
        };


//        成员内部类实现
        new ISayHello().sayHelloWorld();
//        静态内部类实现
        sayHello hello2 = new ISayHello2();
        hello2.sayHelloWorld();
//        局部内部内实现
        new ISayHello3().sayHelloWorld();
//        匿名内部类
        Hello.sayHelloWorld();
//        Lambda表达式的实现
        hello.sayHelloWorld();
    }
}

//定义一个函数式接口
interface sayHello {
    void sayHelloWorld();
}

//成员内部类
//注:定义的类不能和方法重名
class ISayHello implements sayHello {
    @Override
    public void sayHelloWorld() {
        System.out.println("Hello,World---->1");
    }
}

也可在其中传递多个参数---->代码案例

//实现有参的Lambda表达式的使用
public class TestLambdaParam {

    public static void main(String[] args) {
//        Propose propose=null;
//        匿名内部类是对接口的实现或是继承没有类名
        Profess love = new Profess() {
            @Override
            public void sayLove(int target) {
                System.out.println("向我表白的第" + target + "个人");
            }
        };
        love.sayLove(4);

//        使用Lambda表达式实现
//        在匿名内部类的基础上 省略接口的new 接口 ,保留接口的基本类型和变量
        Profess lover = (target) -> {
//            可选的参数声明类型与括号(只有一个参数类型时,可以省略),
            System.out.println("向我表白的第" + target + "个人");
        };
        lover.sayLove(108);
//      使用lambda表达式实现
        Propose propose = (name, name2) -> {
            System.out.println("亲爱的,嫁给我" + name);
            System.out.println("不,我" + name2 + "不愿意");
        };
        propose.sayIDo("李达康", "福尔康");
    }
}

//定义一个接口
interface Profess {
// 一个参数
    void sayLove(int target);
}

//定义一个接口
interface Propose {
// 多个参数
    void sayIDo(String name, String name2);
}


重要特征

  • 可选声明类:不需要声明参数类型,编译器可以统一识别参数值;
  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号;
  • 可选的大括号:如果主体中只包含了一个语句块,就不需要使用大括号,反之则需要使用;
  • 可选的返回关键字:如主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定声明返回一个数值;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值