Java中的Lambda表达式

lambda表达式的目的:
让你的代码看起来很简洁,更多的关注核心代码。
关键:函数式接口,即只含有一个方法的接口。

1.不带参数的情况

// 定义一个函数式接口(即只包含唯一一个抽象方法的接口)
interface ILike{
    public void testLam();
}

// 1.通过普通类实现
class Like implements ILike{
    @Override
    public void testLam() {
        System.out.println("1.普通类实现函数式接口");
    }
}


public class TestLambda1 {

    // 2.静态内部类实现函数式接口
    static class Like2 implements ILike{
        @Override
        public void testLam() {
            System.out.println("2.静态内部类实现函数式接口");
        }
    }


    public static void main(String[] args) {

        ILike like = new Like();
        like.testLam();

        like = new Like2();
        like.testLam();


        // 3.局部内部类实现函数式接口
        class Like3 implements ILike{
            @Override
            public void testLam() {
                System.out.println("3.局部内部类实现函数式接口");
            }
        }

        like = new Like3();
        like.testLam();

        // 4.匿名内部类实现函数式接口  匿名内部类:即类没有名称,不是没有对象(变量)
        like = new ILike() {
            @Override
            public void testLam() {
                System.out.println("4.匿名内部类实现函数式接口");
            }
        };

        like.testLam();

        // 5.用lambda表达式简化
        like = ()->{
            System.out.println("5.用lambda表达式实现函数式接口");
        };
        like.testLam();

    }

}

运行结果:
在这里插入图片描述

2.带参数的情况

package com.ztm.c04Lambda;

public class TestLambda2 {

    // 2.静态内部类实现函数式接口
    static class Love2 implements ILove{
        @Override
        public void sayLove(int i) {
            System.out.println("i love "+ i);
        }
    }


    public static void main(String[] args) {

        ILove love = new Love();
        love.sayLove(1);

        love = new Love2();
        love.sayLove(2);

        // 局部内部类
        class Love3 implements ILove{

            @Override
            public void sayLove(int i) {
                System.out.println("i love " + i);
            }
        }

        love =new  Love3();
        love.sayLove(3);

        // 匿名内部类
        love = new ILove() {
            @Override
            public void sayLove(int i) {
                System.out.println("i love " + i);
            }
        };

        love.sayLove(4);


        // lambda表达式
        love = (int i)->{System.out.println("i love " + i);};
        love.sayLove(5);

        // 简化1:去掉参数类型
        love = (i)->{System.out.println("i love " + i);};
        love.sayLove(6);

        // 简化2:去掉参数的括号
        love = a->{System.out.println("i love " + a);};
        love.sayLove(7);

        // 简化3:去掉方法的大括号
        love = a-> System.out.println("i love " + a);
        love.sayLove(8);

        /**
         * 总结:
         * lambda表达式只能在一行代码的情况下,可以简化成一行。
         * 如果有多行,那么就用代码块包裹
         * 前提是接口为函数式接口
         * 多个参数,也可以去掉参数类型,但是要么都去掉,要么都不去掉,而且,多个参数必须加括号
         */
    }

}


// 定义一个函数式接口(即只包含唯一一个抽象方法的接口)
interface ILove{
     void sayLove(int i);
}

// 1.通过普通类实现
class Love implements ILove{

    @Override
    public void sayLove(int i) {
        System.out.println("i love "+ i);
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值