随笔 - 11  文章 - 0  评论 - 0  阅读 - 256

Lambda表达式

Lambda表达式

  • 为什么要使用lambda表达式
    • 避免匿名内部类定义过多
    • 让代码看起来更简洁
    • 去掉没有意义的代码,保留核心逻辑
  • 理解Functional Interface(函数式接口):
    • 任何接口如果只包含一个抽象方法,则称为函数式接口(很函数)
    • 可以通过lambda表达式创建该接口的对象
  • lambda表达式推导
//1.定义一个函数式接口
interface ILike{
    void lambda();
}
//2.实现类
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println("i like lambda");
    }
}
//3.静态内部类
static class Like2 implements ILike{
    @Override
    public void lambda() {
        System.out.println("i like lambda2");
    }
}
//4.局部内部类
class Like3 implements ILike{
    @Override
    public void lambda() {
        System.out.println("i like lambda3");
    }
}
//5.匿名内部类
like = new ILike() {
    @Override
    public void lambda() {
        System.out.println("i like lambda4");
    }
};
//6.lambda简化
like = ()->{
    System.out.println("i like lambda5");
};
//最终简化后的代码
public class TestLambda1 {
    public static void main(String[] args) {
        //lambda简化
        //函数式接口只有一个抽象方法,省略方法名,直接重写方法体
        ILike like = ()->{
            System.out.println("i like lambda");
        };
        like.lambda();
    }
}
//定义一个函数式接口
interface ILike{
    void lambda();
}
//lambda再简化
public class TestLambda2 {
    public static void main(String[] args) {
        ILove love =(String a)->{
            System.out.println("love"+a);
        };
        love.love("起飞1");
        //简化数据类型
        love =(a)->{
            System.out.println("love"+a);
        };
        love.love("起飞2");
        //以下为代码只有一行的简化方式
        //去掉()
        love =a->{
            System.out.println("love"+a);
        };
        love.love("起飞3");
        //去掉{}
        love = a-> System.out.println("love"+a);
        love.love("起飞4");

        ILove love1 = a -> System.out.println();
    }
}
interface ILove{
    void love(String a);
}
  • 小结:
    • lambda表达式在只有一行方法体的时候可以简化成一行,多行需要用代码块包裹
    • 接口必须是函数式接口(抽象函数只有一个,但是可以有static、final)
    • 多个参数也可以去掉参数类型,必须全去、全留
posted on   NEK_SSY  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

点击右上角即可分享
微信分享提示