Java 将方法作为参数传递
1、前言
在通过WebSocket向浏览器发送数据时,需要发送3种数据到页面上,写3个方法感觉太冗余,故想到了JDK1.8的lambda表达式和Function<T, R>
实现Java把方法作为参数传递
2、上代码
package com.ruoyi.project.front.comService; import com.ruoyi.project.manage.param_set.mapper.ParamSetMapper; import com.ruoyi.project.socket.webSocket.BeamWebSocket; import com.ruoyi.project.socket.webSocket.LighterWebSocket; import com.ruoyi.project.socket.webSocket.RollerWebSocket; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; import java.util.function.Function; @Component public class SendToWebHelper { @Autowired private ParamSetMapper paramSetMapper; private static int index = 0; private static Integer hz = 5; public void sendToWeb() { sendToWeb("lighter", (s) -> LighterWebSocket.sendMessageToAllClient(s)); sendToWeb("roller", (s) -> RollerWebSocket.sendMessageToAllClient(s)); sendToWeb("beam", (s) -> BeamWebSocket.sendMessageToAllClient(s)); } private void sendToWeb(String dir, Function<String, String> function) { String imgFileDir = paramSetMapper.getParamByCode("imgFileDir").getParamValue(); String nginxServer = paramSetMapper.getParamByCode("nginxServer").getParamValue(); File file = new File(imgFileDir + "/" + dir); if (!file.exists() || file.listFiles() == null || file.listFiles().length <= 0) { System.out.println(dir + " dir empty"); return; } List<String> list = new ArrayList<>(); for (File f1 : file.listFiles()) { list.add(f1.getName()); } Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { try { String webPath = nginxServer + "/" + dir + "/" + list.get(index) + ""; if (index++ >= list.size() - 1) { index = 0; } function.apply(webPath); } catch (Exception e) { e.printStackTrace(); } } }, 0, 1000 / hz); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律