• 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);
        }
    }
    
    
  • 相关阅读:
    《深入V8引擎-第01课》
    《各 JavaScript 引擎的简介,及相关资料》
    《【前端性能】必须要掌握的原生JS实现JQuery》
    《[iOS][OC] 开发利器:控制器传送门VCPicker(附demo)》
    《iOS 上的 CSS 样式协议 VKCssProtocol》
    ICML 2019论文录取Top100:谷歌霸榜
    进阶!自然语言处理背后的数据科学
    学界!关于GAN的灵魂七问
    如何优化深度学习模型
    从DeepNet到HRNet,这有一份深度学习“人体姿势估计”全指南
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/14623017.html
Copyright © 2020-2023  润新知