想要使用 .contains() 或 'in' 检查对象是否在 groovy 列表中

Want to check if object is in groovy list using .contains() or 'in'

import groovy.transform.EqualsAndHashCode;
@EqualsAndHashCode(includes="name")
class Activity {
  public String name
  public buildings = []
  public rooms = [] as Set

  Activity(name) {
    this.name = name
  }
}

thisActivity=new Activity("activity")
activityRegistry = []

// is false correct
activityRegistry.contains(thisActivity)

// add new item activity2
activityRegistry << new Activity("activity2")

// is true?????
activityRegistry.contains(thisActivity)

这段代码非常简单,我创建了一个 activityRegistry 列表,我将空列表与我创建的对象进行比较。自然测试失败。我使用插入到列表中的 new 动态创建了一个新对象。然后我将列表与创建的第一个对象进行比较,该对象不是列表的一部分,并且包含或传递。有人可以阐明如何做吗?或者为什么?

A​​ST "EqualsAndHashCode" 仅使用 class 中的 'properties'。 groovy 中的属性声明时没有修饰符 ('public'),并且 getter/setter 是自动生成的。

在您的示例中,将 public String name 更改为 String name

参见:What are 'properties' in Groovy?