java递归返回问题?

protected boolean getRunStatus() {
    Task task = taskMapper.getRunByRemark(AUTO_RUN_REMARK);
    if(task == null) {
        Task obj = new Task();
        obj.setRemark(AUTO_RUN_REMARK);
        obj.setRunStatus(2);
        int save = taskMapper.save(obj);
        getRunStatus();
    } else {
        Integer runStatus = task.getRunStatus();
        return runStatus == 1 ? true : false; //return之后还会调用getRunStatus(),最终返回false
    }
    return false;
}
阅读 2k
1 个回答

会返回

把代码稍微修改一下

protected void getRunStatus() {
    Task task = taskMapper.getRunByRemark(AUTO_RUN_REMARK);
    if(task == null) {
        Task obj = new Task();
        obj.setRemark(AUTO_RUN_REMARK);
        obj.setRunStatus(2);
        int save = taskMapper.save(obj);
        getRunStatus();
    } else {
        task.getRunStatus();
    }
}

如果 taskMapper.getRunByRemark 获取到的 task 为 null 就新生成一个存到 taskMapper 里,然后递归调用。
这个时候代码就会走 else 分之,程序返回。

如果 taskMapper.getRunByRemark 获取到的 task 不为 null,直接走 else 分之,程序返回。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题