java中Lambda表达式

本文详细介绍了Java中的Lambda表达式,从传统的接口实现逐步过渡到Lambda表达式的使用,包括静态内部类、局部内部类、匿名内部类的简化过程,直至最终的Lambda形式。通过实例展示了Lambda如何简化代码,以及不同参数情况下的表达方式。适合Java初学者和进阶者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lambda表达式是实现函数式接口的一种方法。所谓函数式接口就是只有一个抽象方法的接口。写法是:()->{方法体};下面来一步步理解lambda表达式。

1、平时我们在实现接口时,都是直接写一个实现类,如下代码 

package eiji;

public class TestLambda {

    public static void main(String[] args) {
        Bird bird = null;
        bird = new Bird();
        bird.fly();

    }
}

// 1、函数式接口
interface Fly{
    void fly();
}
//2、实现类
class Bird implements Fly{
    @Override
    public void fly() {
        System.out.println("我是一只小小小小鸟,飞不高");
    }
}

2、用得不多的情况下,我们也可以把实现类从外面挪到类的里面,变成静态内部类。

package eiji;

public class TestLambda {

    //3、静态内部类
    public static class Bird implements Fly{
        @Override
        public void fly() {
            System.out.println("我是一只小小鸟,想要飞");
        }
    }
    public static void main(String[] args) {
        Bird bird = null;
        bird = new Bird();
        bird.fly();

    }
}

// 1、函数式接口
interface Fly{
    void fly();
}

3、静态内部类也嫌麻烦的话还可以变成局部内部类。

public static void main(String[] args) {

        //4、局部内部类
        class Bird implements Fly{
            @Override
            public void fly() {
                System.out.println("我是一只小小小小鸟,尝试飞");
            }
        }
        Bird bird = null;
        bird = new Bird();
        bird.fly();

    }
}

// 1、函数式接口
interface Fly{
    void fly();
}

4、还可以在简化成匿名内部类,就是没有方法名,直接用接口或者父类名来new

    public static void main(String[] args) {

      
        Fly bird = null;
        
        //5、匿名内部类--没有类名,直接上方法体
        bird = new Fly(){
            @Override
            public void fly() {
                System.out.println("我是一只小小小小鸟,不太高");
            }
        };
        bird.fly();

    }
}

// 1、函数式接口
interface Fly{
    void fly();
}

5、比匿名内部类在简化就变成lambda表达式了。

public static void main(String[] args) {

        bird = ()->{
            System.out.println("我是一只小小小小鸟,飞高啦");
        };
        bird.fly();
    }
}

// 1、函数式接口
interface Fly{
    void fly();
}

6、此外,上面这个lambda表达式还可以再简便,变成下面的写法,但是这种写法的前提是接口中的方法的方法体只有一句话,不然还带用代码块包裹。

bird = ()-> System.out.println("我是一只小小小小鸟,飞高啦");

7、带参数的方法还可以将括号也省掉。

 bird = s-> System.out.println("我是一只小小小小鸟,飞高啦");

// 1、函数式接口
interface Fly{
    void fly(String s);
}

8、如果有多个参数,要去掉修饰符就都去掉,并且要带括号。

bird = (name,size)-> System.out.println("我是一只小小小小鸟,飞高啦");


// 1、函数式接口
interface Fly{
    void fly(String name,double size);
}

以上就是对lambda表达式的理解,是学习了b站小狂神的视频之后的笔记,大家要看详细的视频请戳:https://www.bilibili.com/video/BV1V4411p7EF?p=10&spm_id_from=pageDriver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值