首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用java8重构倍数或条件

用java8重构倍数或条件
EN

Stack Overflow用户
提问于 2018-02-06 02:12:44
回答 1查看 457关注 0票数 1

我有一个用java8重构if块中的多个或条件的场景

代码语言:javascript
运行
复制
private boolean isStatusAvailable(List<Hierarchy> hierarchyList, String status, int i) {
    return isContainsStatus(hierarchyList.get(i+1), status) || isContainsStatus(hierarchyList.get(i+1), ResultStatus.SUCCESS) || isContainsStatus(hierarchyList.get(i+1), ResultStatus.PEND);
}
private boolean isContains(Hierarchy hierarchy, String status) {
    return hierarchy.getStatus().contains(status);
}
public enum ResultStatus {
    SUCCESS,
    SUCCESS_PENDING,
    SUCCESS_SUMMARY,
    PEND
}

有没有办法在java8中重构上面的代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-06 07:06:21

总是有可能引入这样的循环:

代码语言:javascript
运行
复制
private boolean isStatusAvailable(List<Hierarchy> hierarchyList, ResultStatus status, int i) {
  Hierarchy hierarchy = hierarchyList.get(i + 1);
  for (ResultStatus s : Arrays.asList(status, SUCCESS, PEND)) {
    if (isContainsStatus(hierarchy, s)) {
      return true;
    }
  }
  return false;
}

如果您想使用Stream,那么您可以编写:

代码语言:javascript
运行
复制
private boolean isStatusAvailable(List<Hierarchy> hierarchyList, ResultStatus status, int i) {
  Hierarchy hierarchy = hierarchyList.get(i + 1);
  return Stream.of(status, SUCCESS, PEND).anyMatch(s -> isContainsStatus(hierarchy, s));
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48634437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档