我通过定义如下的ENUM来验证从数据库中检索到的记录的状态
public enum RecordStatusEnum {
CREATED("CREATED"),
INSERTED("INSERTED"),
FAILED("FAILED");
private String recordStatusValue;
RecordStatusEnum (String status) {
recordStatusValue= status;
}
public boolean isSuccess() {
return (this.equals(CREATED) || this.equals(INSERTED));
}
}
方法isSuccess()用于检查检索到的记录的状态(员工的列状态)
if (!(employee.getStatus().isSuccess())) {
// return error
}
根据新的要求,引入了一组条件,例如A,B和C。对于他们,在Employee表“ condition”中有一列。
因此,我需要检索状态以及条件,并查看它是否属于具有两者组合的集合。
例如:isSuccess()应该检查以下内容:
CREATED and A
CREATED and B
INSERTED and C
必须做到这一点,以使我很容易在列表中轻松地添加一个新的组合,例如“ INSERTED and B”。
解决上述问题的最佳方法是什么?
注意 :在实际的业务场景中,状态和检查要多得多(例如isFailed()canBeModified()等)以及许多不同的组合
即使不使用ENUMS,也可以建议使用任何方法。 我提到了ENUMS,因为我不想与现有的实现有很大的出入
有很多可能性,但是您可以这样做(我删除了String状态,因为它等于枚举的名称,所以不添加任何值):
public enum RecordStatusEnum {
CREATED(Condition.A, Condition.B),
INSERTED(Condition.C),
FAILED();
private Set<Condition> successConditions;
RecordStatusEnum(Condition... successConditions) {
this.successConditions = EnumSet.copyOf(Arrays.asList(successConditions));
}
public boolean isSuccess(Condition c) {
return successConditions.contains(c);
}
}
编辑:
具有两组条件的示例:
public enum RecordStatusEnum {
CREATED(EnumSet.of(Condition.A, Condition.B),
EnumSet.of(Condition.C)),
INSERTED(EnumSet.of(Condition.C),
EnumSet.of(Condition.B),
FAILED(EnumSet.noneOf(Condition.class),
EnumSet.noneOf(Condition.class));
private Set<Condition> successConditions;
private Set<Condition> modificationConditions;
RecordStatusEnum(Set<Condition> successConditions,
Set<Condition> modificationConditions) {
this.successConditions = successConditions;
this.modificationConditions = modificationConditions;
}
public boolean isSuccess(Condition c) {
return successConditions.contains(c);
}
public boolean canBeModified(Condition c) {
return modificationConditions.contains(c);
}
}
问题内容: 在没有信用卡号且没有其他信息的情况下,PHP中确定该号码是否为有效号码的最佳方法是什么? 现在,我需要可以与American Express,Discover,MasterCard和Visa一起使用的功能,但是如果它也可以与其他类型的功能一起使用,可能会有所帮助。 问题答案: 卡号验证分为三个部分: 模式 -是否与发行者模式(例如VISA /万事达卡等)匹配 CHECKSUM- 它是否
这并不困难,但它让我质疑spring auth服务器是最好的选择,还是我应该使用Keycloak?
问题内容: Java有哪些好的电子邮件地址验证库?公用验证器是否有替代方案? 问题答案: pache Commons通常被称为一个可靠的项目。不过请记住,如果您想确保它是真实的电子邮件,并且所有者希望在您的网站上使用它,则仍然必须向该地址发送一封验证电子邮件。 编辑:有一个错误,它对域的限制太严格,导致它不接受来自新TLD的有效电子邮件。 此错误已于03 / Jan / 15 02:48在comm
问题内容: 这是一个小问题,因为我可以轻松地参加一对班做这项工作。我并不是真的想要这样做,我觉得应该有一些简单的,内置的,类似于Java的方法来返回两个值。你们最好的,最简单的方法是什么?数组?其他一些数据结构? 问题答案: 据我所知,不幸的是在Java中没有对的内置表示(我当然希望有)。就个人而言,当我编写一个项目时发现配对类经常很有用时,我会创建一个通用类(这可能是您在想的)。返回数组是一种快
问题内容: 我想过滤java.util.Collection基于谓词的。 问题答案: Java 8(2014)在一行代码中使用流和lambda解决了此问题: 这是一个教程。 使用修改收集到位。(注意:在这种情况下,谓词将删除满足该谓词的对象): 允许过滤集合而无需编写循环或内部类: 你能想象一些更具可读性的东西吗?
问题内容: 我有一个状态数组,比方说this.state.arr。我想向此状态属性添加一些内容,然后更改更多属性。 选项1 选项2 所以..我知道this.state应该被视为不可变的。但是可以像在选项1中那样使用它还是可以通过它设置状态,还是可以像在选项2中那样使用它,这样总是总是首先在内存中进行复制 问题答案: 使用concat的另一种简单方法: