java比较两个枚举

标签 java enums comparison

给出测试代码:

@Test
  public void testEnumAreEqual() {
    for (var someEnum : SomeEnum.values()) {
      Assertions.assertTrue(EnumUtils.isValidEnum(OtherEnum.class, someEnum.name()));
    }
    for (var otherEnum : OtherEnum.values()) {
      Assertions.assertTrue(EnumUtils.isValidEnum(SomeEnum.class, otherEnum.name()));
    }
  }

我想检查两个给定的枚举是否包含相同的值。

是否有更优雅的方法来做到这一点?

最佳答案

建立一组名称:

Set<String> someEnumNames = 
    Arrays.stream(SomeEnum.values())
        .map(Enum::name)
        .collect(toSet());

OtherEnum 执行相同的操作(考虑将以上内容提取到方法中)。

然后:

assertEquals(someEnumNames, otherEnumNames);

关于java比较两个枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58540553/

相关文章:

python - 如何限制可以传递给方法参数的允许值(使用类型提示允许静态代码分析)

iphone - Typedef 枚举设置和访问

Ruby vs Scala——各自的优缺点

java - 在 Java 中选择 Firebird 和 HSQLDB

java - Java 1.8中HashMap的HashMap检索

java - Spring Boot 中的 JSON Java 8 LocalDateTime 格式

java - 以两种不同的方法读取相同的输入两次

Java - 重命名枚举常量

cocoa - 什么 NSString 比较方法调用相当于 CFStringCompare 函数调用?

java - 保存软件的安装目录