Хотите проверить, находится ли объект в отличном списке, используя .contains() или '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, я сравниваю пустой список с созданным мной объектом. естественно тест проваливается. Я создаю новый объект на лету, используя новый, который я вставляю в список. Затем я сравниваю список с первым созданным объектом, который не является частью списка и содержит или в проходах. может кто-нибудь пролить свет на то, как? или почему?


person kmassada    schedule 24.01.2016    source источник
comment
Это список, а не массив   -  person tim_yates    schedule 24.01.2016
comment
внес коррективы @tim_yates   -  person kmassada    schedule 24.01.2016


Ответы (1)


AST «EqualsAndHashCode» использует только «свойства» класса. Свойства в groovy объявляются без модификатора ("public"), а геттер/сеттер генерируются автоматически.

В вашем примере измените public String name на String name.

См.: Что такое "свойства" в Groovy?

person Jérémie B    schedule 24.01.2016