当前位置: 首页 > news >正文

Java的匿名内部类转为lamada表达式

在Java中,匿名内部类通常用于创建没有命名类的实例。例如,你可能需要创建一个实现了某个接口的匿名类,或者在需要重写某个方法时使用它。在Java 8及更高版本中,你可以使用Lambda表达式来替代传统的匿名内部类,使得代码更加简洁和易读。

  1. 接口实现
    假设你有一个接口Action,如下所示:
interface Action {void execute();
}

使用匿名内部类:

Action action = new Action() {@Overridepublic void execute() {System.out.println("Executing action");}
};

转换为Lambda表达式:

Action action = () -> System.out.println("Executing action");
  1. 单方法的接口(Functional Interface)
    如果你只有一个方法需要实现(即Functional Interface),可以直接使用Lambda表达式。例如,Runnable接口:

使用匿名内部类:

Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("Running");}
};

转换为Lambda表达式:


Runnable runnable = () -> System.out.println("Running");
  1. 带有参数的方法
    如果接口方法带有参数,你可以在Lambda表达式中传递参数。例如,Consumer接口:

使用匿名内部类:

Consumer<String> consumer = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}
};

转换为Lambda表达式:

Consumer<String> consumer = s -> System.out.println(s);
  1. 带有多个抽象方法的接口(不适用Lambda)
    对于包含多个抽象方法的接口,你不能直接使用Lambda表达式,因为Lambda表达式需要一个目标类型的单一抽象方法(SAM)。在这种情况下,你可以使用匿名内部类或者实现所有方法。
http://www.lryc.cn/news/533852.html

相关文章:

  • redis高级数据结构Stream
  • LeetCode781 森林中的兔子
  • 单硬盘槽笔记本更换硬盘
  • EB生成配置的过程
  • 量化交易数据获取:xtquant库的高效应用
  • 哨兵模式与 Redis Cluster:高可用 Redis 的深度剖析
  • C++20新特性
  • 电机实验曲线数据提取
  • windows蓝牙驱动开发-调试及支持的HCI和事件
  • Excel大数据量导入导出
  • Linux系统命令无法使用(glib库相关问题)
  • Qt修仙之路2-1 仿QQ登入 法宝初成
  • DeepSeek-V3 论文解读:大语言模型领域的创新先锋与性能强者
  • 配置#include “nlohmann/json.hpp“,用于处理json文件
  • 索引失效的14种常见场景
  • 解决com.kingbase8.util.KSQLException: This _connection has been closed.
  • openAI官方prompt技巧(二)
  • 【非 root 用户下全局使用静态编译的 FFmpeg】
  • 【嵌入式 Linux 音视频+ AI 实战项目】瑞芯微 Rockchip 系列 RK3588-基于深度学习的人脸门禁+ IPC 智能安防监控系统
  • 前端布局与交互实现技巧
  • idea 找不到或者无法加载主类
  • Flink 调用海豚调度器 SQL 脚本实现1份SQL流批一体化的方案和可运行的代码实例
  • ES6 Map 数据结构是用总结
  • go结构体详解
  • 机器学习-关于线性回归的表示方式和矩阵的基本运算规则
  • kafka 3.5.0 raft协议安装
  • 后台管理系统网页开发
  • 使用一个大语言模型对另一个大语言模型进行“调教”
  • golang使用sqlite3,开启wal模式,并发读写
  • 如何利用maven更优雅的打包