关于java8vcTerms.stream().map中的return问题
1,关于下⾯这段代码:
@Override
public List<TermTimeInfoVo> queryByCourseId(Long courseId) {
VcTerm vcTerm=new VcTerm();
vcTerm.setIsDelete(Contants.UN_DELETE_FLAG);
vcTerm.setCourseId(courseId);
List<VcTerm> vcTerms = vcTermMapper.select(vcTerm);
if (CollectionUtils.isNotEmpty(vcTerms)){
**return** vcTerms.stream().map(x -> {
//根据期次id查询⾃由选课默认班级信息
ClassVo classVo = classMapper.Id());
TermTimeInfoVo termTimeInfoVo = new TermTimeInfoVo();
termTimeInfoVo.EndTime().getTime());java stream
termTimeInfoVo.StartTime().getTime());
termTimeInfoVo.TermName());
termTimeInfoVo.Id());
if (classVo != null){
termTimeInfoVo.ClassId());
}
return termTimeInfoVo;
}).List());
}
return null;
}
2,关于这个问题:当这段代码中没有写加粗的return的时候,明明termTimeInfoVo⾥⾯有值,那为什么这个接⼝还是返回为null?
回答:list.stream().map中的return像continue的作⽤⼀样,只是结束当前循环。所以这段代码经过 return termTimeInfoVo;,完成这个循环后,还会执⾏到 return null这个代码,所以接⼝返回null。
怎么解决呢?
在这段代码加上以上加粗的return就可以了,就返回的是这个循环的list中的返回结果list,也正好对应这个接⼝的返回类型 List。这样就不会执⾏下⾯的return null代码了,接⼝返回也有结果了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论