Java------Lambda表达式

本文介绍了Lambda表达式在Java 8中的引入,阐述其如何简化代码并优化匿名内部类。重点讲解了函数式接口的概念和Lambda的语法格式,以及省略模式的使用实例。通过一步步演示,展示了Lambda表达式如何提升代码可读性和效率。
摘要由CSDN通过智能技术生成

Lambda表达式

什么是Lambda表达式

Lambda表达式时Java8中提供的一种新的特性,一种匿名函数方法,可以把Lambda表达式理解为一段可以传递的代码,可以写出更简洁、更灵活的代码


为什么要是有Lambda表达式

  1. 避免匿名内部类定义过多
  2. 可以让你的代码看起来更简洁
  3. 去掉一堆没有意义的代码,只留下核心逻辑

函数式接口

理解Funcyional InterFace(函数式接口)是学习Java8 Lambda表达式的关键所在

  • 函数式接口的定义:

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

      public interface Runnable{

      ​ public abstract void run();

      }

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

Lambda语法格式

Lambda表达式就是对函数式接口中抽象方法的实现,是对其匿名内部类的一个简写,只保留了 方法的参数列表和方法体,其他的成分可以省略。因此,Lambda表达式的格式非常简洁,只有三部分组成:

  • 参数列表

  • 箭头

  • 方法体

    总结:(参数列表)->{方法体}

代码样式

package Lambda;

public class TestLambda {

//    3.静态内部类
    static class Love2 implements Like{
    @Override
    public void lambda() {
        System.out.println("I Love Lambda2");
    }
}

    public static void main(String[] args) {
        Like like = new love();
        like.lambda();

        like = new Love2();
        like.lambda();


//        4.局部内部类
        class Love3 implements Like{
            @Override
            public void lambda() {
                System.out.println("I Love Lambda3");
            }
        }
        like = new Love3();
        like.lambda();


//        5.匿名内部类
        like = new Like(){
            @Override
            public void lambda() {
                System.out.println("I Love Lambda4");
            }
        };
        like.lambda();

//       6.用Lambda简化
        like =() ->{
            System.out.println("I Love Lambda5");
        };
        like.lambda();
    }
}

//1.定义一个函数式接口
interface Like{
    void lambda();
}

//2.实现类
class love implements Like{
    @Override
    public void lambda() {
        System.out.println("I Love Lambda");
    }
}

1~6是逐步简化代码的过程

代码运行结果:

I Love Lambda
I Love Lambda2
I Love Lambda3
I Love Lambda4
I Love Lambda5

Lambda表达式:省略模式

在Lambda标准格式的基础商,使用省略写法的规则为:

  • 小括号内参数的参数类型可以省略
  • 小括号有且只有一个参数,则小括号可以直接省略
  • 如果花括号有且只有一个语句,无论是否有返回值,花括号、return关键字,分号可以省略

Lambda省略模式代码实现

package Lambda;

public class TestLambda02 {
    public static void main(String[] args) {

        Ilove love =(int a)->{
            System.out.println("我爱你"+a+"遍");
        };
        love.love(3000);

//        1.简化1:去掉参数类型
        love =(int a)->{
            System.out.println("我爱你"+a+"遍");
        };
        love.love(6000);

//        简化2:简化括号
        love = a->{
            System.out.println("我爱你"+a+"遍");
        };
        love.love(9000);

//    简化3:去掉花括号
        love = a -> System.out.println("我爱你"+a+"遍");
        love.love(12000);
    }
}

interface Ilove{
    void love(int a);
}

代码运行结果:

我爱你3000遍
我爱你6000遍
我爱你9000遍
我爱你12000遍

总结

  1. Lambda表达式只能有一行代码的情况下才能简化为一行代码。如果有多行代码,那么只能用代码块包裹
  2. 前提是接口为函数式接口
  3. 多个参数也可以去掉参数类型,但要去就得全部去掉,必须加上括号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值