我有一个具有枚举类型的 DTO。我想测试 DTO 字段,但不知道该怎么做。
Class MyDto {
public enum ExamResult { PASS, FAIL };
private ExamResult result;
...
}
我正在尝试测试其他类中的结果字段
if(myDto.result.equals("PASS")) {
//doSomething
} else {
//doOtherthing
}
但是 .equals() 总是返回 false,即使它具有正确的值。所以不确定如何测试它。
最佳答案
比较相等性时,Enums
值的行为就好像它们是整数一样。因此,您应该使用 ==
运算符。虽然 equals(ExamResult.PASS)
也可以正常工作,如评论中所述(但这并不经常使用)。
if(myDto.result == ExamResult.PASS) {
//Do something
} else {
//Do other thing
}
如果您只能访问 Enum
值的 String
表示形式,则可以使用此类代码:(但我不推荐)
if(myDto.result.getName().equals("PASS")) {
//Do something
} else {
//Do other thing
}
更多说明: Enum
值在编译时被赋予唯一的整数值。在 Java 语言中,保证枚举值的名称和编译时间编号是唯一的。您可以使用 ordinal()
方法获取 Enum 唯一编号。可以使用 values()
方法以数组表示形式获取枚举的值。可以使用 name()
方法以字符串表示形式获取 Enum 值的名称。
关于java - 比较 Java 中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854770/