zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    
    
  • 相关阅读:
    Spring+redis整合遇到的问题集以及注意事项
    Map源码学习之HashMap
    评分---五星好评
    下拉复选框
    倒计时按钮—获取手机验证码按钮
    input上传文件个数控制
    ajax请求完之前的loading加载
    获取浏览器滚动距离
    获取浏览器可视区域宽高
    获取元素尺寸宽高
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/14623017.html
Copyright © 2011-2022 走看看