一阵风° 2023-02-07 22:55 采纳率: 50%
浏览 67
已结题

超时跳出方法代码的返回值问题

public static Object callMethod(final Object target , final String methodName ,final Class<?>[] parameterTypes,final Object[]params,int times){
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    FutureTask<String> future = new FutureTask<String>(new Callable<String>() {
        public String call() throws Exception {
            String value = null  ;
            try {
                Method method = null ;
                method = target.getClass().getDeclaredMethod(methodName , parameterTypes ) ;
                Object returnValue = method.invoke(target, params) ;
                value = returnValue != null ? returnValue.toString() : null ;
            } catch (Exception e) {
                throw e ;
            }
            return value ;
        }
    });
    executorService.execute(future);
    String result = null;
    try{
        result = future.get(times , TimeUnit.SECONDS );
    }catch (Exception e){
        System.out.println("当前终端无法连接");
        e.printStackTrace();
    }
    executorService.shutdownNow();
    return result ;
}

这段代码 是我在网上找的可以控制等待时间运行方法的代码 可如果要运行的方法有返回值的话 我该怎么接收呢

  • 写回答

5条回答 默认 最新

  • 六灬道 2023-02-07 23:02
    关注

    返回值会作为 String 类型被存储在 result 变量中。你可以通过打印出来或者将其存储在其他变量中,然后进一步使用它。例如:

    String result = (String) callMethod(...);
    System.out.println(result);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月9日
  • 已采纳回答 2月8日
  • 创建了问题 2月7日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料