想要使用 .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 动态创建了一个新对象。然后我将列表与创建的第一个对象进行比较,该对象不是列表的一部分,并且包含或传递。有人可以阐明如何做吗?或者为什么?
AST "EqualsAndHashCode" 仅使用 class 中的 'properties'。 groovy 中的属性声明时没有修饰符 ('public'),并且 getter/setter 是自动生成的。
在您的示例中,将 public String name
更改为 String name
。
参见:What are 'properties' in Groovy?
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 动态创建了一个新对象。然后我将列表与创建的第一个对象进行比较,该对象不是列表的一部分,并且包含或传递。有人可以阐明如何做吗?或者为什么?
AST "EqualsAndHashCode" 仅使用 class 中的 'properties'。 groovy 中的属性声明时没有修饰符 ('public'),并且 getter/setter 是自动生成的。
在您的示例中,将 public String name
更改为 String name
。
参见:What are 'properties' in Groovy?