Lambda 表达式与方法引用

Lambda 表达式,可以取代大部分的匿名内部类,写出更简单优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。
常用方法格式:
@FunctionalInterface;修饰函数式接口,接口中的抽象方法只有一个。主要是和 lambda 表达式一起出现。


/**多参数无返回*/
@FunctionalInterface
public interface MultiParamNoReturn {
    void method(int a, int b);
}

// 实现该接口方法
MultiParamNoReturn multiParamNoReturn = (int a, int b) -> {
    System.out.println("MultiParamNoReturn param:" + "{" + a +"," + + b +"}");
};

// 简化实现接口方法 要写参数类型必须全写,要不写参数类型必须全不写
MultiParamNoReturn multiParamNoReturn = (a, b) -> {
           System.out.println("MultiParamNoReturn param:" + "{" + a +"," + + b +"}");
};
// 调用该方法
MultiParamNoReturn.method(6, 8);

/**无参无返回值*/
@FunctionalInterface
public interface NoParamNoReturn {
    void method();
}

// 实现该接口方法
NoParamNoReturn noParamNoReturn = () -> {
    System.out.println("NoParamNoReturn");
};
// 简化实现接口方法 方法内只有一条语句,可以省略大括号
NoParamNoReturn noParamNoReturn = () -> System.out.println("NoParamNoReturn");
// 调用该方法
noReturnNoParam.method();

/**一个参数无返回*/
@FunctionalInterface
public interface OneParamNoReturn {
    void method(int a);
}

// 实现该接口方法
OneParamNoReturn oneParamNoReturn = (int a) -> {
    System.out.println("OneParamNoReturn param:" + a);
};
// 简化实现接口方法 方法内只有一条语句,可以省略大括号
OneParamNoReturn oneParamNoReturn = a -> System.out.println("OneParamNoReturn param:" + a);
// 调用该方法
oneParamNoReturn.method(1);

/**多个参数有返回值*/
@FunctionalInterface
public interface MultiParamReturn {
    int method(int a, int b);
}
// 实现该接口方法
MultiParamReturn multiParamReturn = (int a, int b) -> {
    return a + b;
};
// 简化实现接口方法 方法内只有一条语句,并且是return语句,可以省略大括号
MultiParamReturn multiParamReturn = ( a, b) -> a + b;
// 调用该方法
multiParamReturn.method(1, 1)

/*** 无参有返回*/
@FunctionalInterface
public interface NoParamReturn {
    int method();
}
// 实现该接口方法
NoParamReturn noParamReturn = () -> {
    return 1 + 1;
};
// 简化实现接口方法 方法内只有一条语句,并且是return语句,可以省略大括号
NoParamReturn noParamReturn = () -> 1 + 1;
// 调用该方法
noParamReturn.method()

/**一个参数有返回值*/
@FunctionalInterface
public interface OneParamReturn {
    int method(int a);
}
// 实现该接口方法
OneParamReturn oneParamReturn = (int a) -> {
    return a + 1;
};
// 简化实现接口方法 方法内只有一条语句,并且是return语句,可以省略大括号
OneParamReturn oneParamReturn = a -> a + 1;
// 调用该方法
oneParamReturn.method(2);

lambda 表达式引用方法
方法归属者::方法名 静态方法的归属者为类名,普通方法归属者为对象

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

        //lambda2 引用了已经实现的 doubleNum 方法
        NoParamNoReturn lambda = Exe1::doubleNum;
        System.out.println(lambda.method());

    }

    /**
     * 要求
     * 1.参数数量和类型要与接口中定义的一致
     * 2.返回值类型要与接口中定义的一致
     */
    public static int doubleNum() {
        return a * 2;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

听不见你的名字

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值