Java 8 使用java8重构多个或多个条件
我有一个使用java8重构if块中多个or条件的场景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) ||
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()
返回的对象比重复轮询允许更好的查询,但是在不知道它返回什么的情况下,我们应该如何判断呢?