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

时间:2016-01-24 17:06:59

标签: list grails groovy groovyshell

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列表,我将空列表与我创建的对象进行比较。自然测试失败。我使用我插入列表中的新对象动态创建一个新对象。我将列表与创建的第一个对象进行比较,该对象不是列表的一部分,包含或传递。有人可以解释一下如何?或者为什么?

1 个答案:

答案 0 :(得分:4)

AST“EqualsAndHashCode”仅使用该类中的“属性”。在groovy中声明的属性没有修饰符('public'),并且自动生成getter / setter。

在您的示例中,将String name更改为^(?:(?:{\w+\??}|\w+)\/)+$

请参阅:What are 'properties' in Groovy?