【问题标题】:java comparison of two enumsjava比较两个枚举
【发布时间】:2019-10-24 11:38:08
【问题描述】:

给定测试代码:

@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()));
    }
  }

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

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

【问题讨论】:

  • 您的意思是要检查enum E1 { A, B; }enum E2 { A, B; } 是否相等,因为它们都有值A 和B?
  • @Thomas:正确,是的
  • @SMA 不应该工作,不同的实例
  • 你为什么复制你的previous question?人们试图在该问题上为您提供帮助,但您选择忽略该帮助并发布新问题。

标签: java enums comparison


【解决方案1】:

建立一组名称:

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

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

然后:

assertEquals(someEnumNames, otherEnumNames);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2010-12-17
    • 2012-05-04
    相关资源
    最近更新 更多