【Java】 方法引用与Lambda(快速上手)

Java系列文章目录

补充内容 Windows通过SSH连接Linux

第一章 Linux基本命令的学习与Linux历史


文章目录

一、前言

  • Calculator::plus
  • 看到::好奇有什么用

二、学习内容:

  • 方法引用

三、问题描述

  • 不知道使用的场景只知道他是引用

四、解决方案:

4.1 方法引用

方法引用就像是给一个方法起个别名,这样我们可以更方便地用这个别名来调用它。

  • 类似于给某个工具添加一个标签,方便以后使用。

参考代码:

java 复制代码
class Calculator {  
    // 加法方法  
    public int plus(int a, int b) {  
        return a + b;  
    }  
}  

@FunctionalInterface  
interface MyNum {  
    int calculate(int a, int b);  
}  

public class Main {  
    public static void main(String[] args) {  
        // 创建一个计算器实例  
        Calculator calculator = new Calculator();  

        // 使用方法引用来指向加法方法  
        MyNum add = calculator::plus;  // 这里是方法引用  

        // 调用方法,计算 2 + 5  
        int result = add.calculate(2, 5);  

        // 输出结果  
        System.out.println(result); // 输出 7  
    }  
}
  • 方法对比
java 复制代码
// 使用 lambda 表达式  
MyNum add = (a, b) -> calculator.plus(a, b);  

// 使用方法引用  
MyNum add = calculator::plus;

🌟MyNum add = Calculator::plus;

将 Calculator 的 plus 方法引用赋值给 add。

🌟add.calculate(2, 5);

实际上执行了 calculator.plus(2, 5);,返回结果 7。


五、总结:

🌟语句复杂的时候用Lambda表达式

🌟语句简单或适合函数式编程用方法引用

参考代码:

java 复制代码
// 使用 lambda 表达式  
MyNum add = (a, b) -> calculator.plus(a, b);  

// 使用方法引用  
MyNum add = calculator::plus;
  • 如使用 Stream API,方法引用可以让代码更简洁
java 复制代码
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  

// 使用 lambda 表达式  
names.forEach(name -> System.out.println(name));  

// 使用方法引用  
names.forEach(System.out::println);

(后续有遇到问题再添加)


声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

相关推荐
学计算机的计算基11 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana216 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
AOwhisky18 分钟前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
万亿少女的梦16834 分钟前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
咩咩啃树皮9 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
灯澜忆梦9 小时前
GO_并发编程---定时器
开发语言·后端·golang
鱟鲥鳚9 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
-银雾鸢尾-10 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-10 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白11 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程