Java 8 使用java8重构多个或多个条件

Java 8 使用java8重构多个或多个条件,java-8,Java 8,我有一个使用java8重构if块中多个or条件的场景 private boolean isStatusAvailable(List<Hierarchy> hierarchyList, String status, int i) { return isContainsStatus(hierarchyList.get(i+1), status) || isContainsStatus(hierarchyList.get(i+1), ResultStatus.SUCCESS) ||

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

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
}
private boolean isStatusAvailable(列表层次列表,字符串状态,int i){
返回isContainsStatus(hierarchyList.get(i+1),status)| isContainsStatus(hierarchyList.get(i+1),ResultStatus.SUCCESS)| isContainsStatus(hierarchyList.get(i+1),ResultStatus.PEND);
}
私有布尔值isContains(层次结构、字符串状态){
返回hierarchy.getStatus().contains(status);
}
公共枚举结果状态{
成功
成功在望,
成功总结,,
推迟决定
}

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

总是有可能引入如下循环:

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;
}

始终有可能引入如下循环:

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;
}

您应该决定该方法的名称是
isContains
还是
isContainsStatus
,以及它需要的是
字符串还是
枚举
;不可能两者同时发生。而且,
i+1
看起来很可疑。它背后的基本原理是什么?调用者应该如何处理,传递
-1
以访问列表的第一个元素?也许通过
getStatus()
返回的对象允许比重复轮询更好的查询,但是在不知道它返回什么的情况下,我们应该如何判断?您应该决定该方法的名称是
isContains
还是
iscontainssstatus
,以及它是否需要
字符串
enum
;不可能两者同时发生。而且,
i+1
看起来很可疑。它背后的基本原理是什么?调用者应该如何处理,传递
-1
以访问列表的第一个元素?也许通过
getStatus()
返回的对象比重复轮询允许更好的查询,但是在不知道它返回什么的情况下,我们应该如何判断呢?