Lambda_04 函数表达式引用静态方法,非静态方法

本文介绍如何使用Java中的Lambda表达式来引用静态方法及对象实例的方法。通过具体的代码示例,展示了如何利用方法引用简化代码,提高程序的可读性和维护性。

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

Lambda函数表达式引用方法

1、前提条件:实现接口的入参、返回值类型与接口的抽象方法一致
 

创建内部接口  

LambdaInterface51 添加加法interfaceSum抽象方法

LambdaInterface52 添加减法interfaceSub抽象方法、

可以添加@FunctionalInterface 注释

2、Lambda引用静态方法

创建静态方法

public static int sum (int a,int b){
        return a+b;
    }

调用静态方法

Lambda05::sum; 函数Lambda05的静态方法sum;
        /**
         * 静态方法Lambda表达式 1
         */
        LambdaInterface51 lambdaInterface510 = (int a,int b)->sum(a,b);
        int sum = lambdaInterface510.interfaceSum(2, 3);
        System.out.println(sum);

        /**
         * 静态方法Lambda表达式 2
         */
        LambdaInterface51 lambdaInterface511 = Lambda05::sum;
        int sum511 = lambdaInterface511.interfaceSum(7, 8);
        System.out.println(sum511);


3、Lambda引用非静态(对象)

创建非静态方法

    public int sub(int a,int b){
        return a - b;
    }

方法调用

        /**
         * 对象方法 Lambda表达式1
         * LambdaInterface52 lambdaInterface52 = refM::sub;
         * 含义:定义接口 LambdaInterface52的实现为 对象refM的sub方法
         */
        Lambda05 refM = new Lambda05();
        LambdaInterface52 lambdaInterface52 = refM::sub;
        int sub = lambdaInterface52.interfaceSub(5,2);
        System.out.println(sub);

代码示例:

/**
 * @author lingyiwin
 * @version 1.0
 * @date 2020/10/25 22:32
 * Lambda函数表达式引用方法
 * 前提条件:实现接口的入参、返回值类型与接口的抽象方法一致
 * Lambda引用静态方法
 * Lambda引用非静态(对象)
 */
public class Lambda05 {
    public static void main(String[] args) {
        /**
         * 静态方法Lambda表达式 1
         */
        LambdaInterface51 lambdaInterface510 = (int a,int b)->sum(a,b);
        int sum = lambdaInterface510.interfaceSum(2, 3);
        System.out.println(sum);

        /**
         * 静态方法Lambda表达式 2
         */
        LambdaInterface51 lambdaInterface511 = Lambda05::sum;
        int sum511 = lambdaInterface511.interfaceSum(7, 8);
        System.out.println(sum511);

        /**
         * 对象方法 Lambda表达式1
         * LambdaInterface52 lambdaInterface52 = refM::sub;
         * 含义:定义接口 LambdaInterface52的实现为 对象refM的sub方法
         */
        Lambda05 refM = new Lambda05();
        LambdaInterface52 lambdaInterface52 = refM::sub;
        int sub = lambdaInterface52.interfaceSub(5,2);
        System.out.println(sub);
    }

    public static int sum (int a,int b){
        return a+b;
    }

    public int sub(int a,int b){
        return a - b;
    }
}

interface LambdaInterface51{
    public int interfaceSum(int a,int b);
}

interface LambdaInterface52{
    public int interfaceSub(int a,int b);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EngineerForSoul

你的鼓励是我孜孜不倦的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值