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);
        }
    }
    
    
  • 相关阅读:
    bzoj3339 rmq problem (range mex query)
    sg函数与博弈论
    JSOI Round 2题解
    bzoj2286 消耗战
    输入输出优化(黑科技)
    虚树
    迷之数学题*2
    k-d tree 学习笔记
    一类有依赖的树形背包dp方法
    BZOJ4283: 魔法少女伊莉雅(最短路径图+最短路径树)
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/14623017.html
Copyright © 2011-2022 走看看