NamedDomainObjectCollection

已知子类型
NamedDomainObjectSet

NamedDomainObjectCollection 表示具有内在的、恒定名称的对象集合。

要添加到命名域对象集合的对象必须实现 equals(),以确保没有两个具有不同名称的对象被认为是相等的。也就是说,所有相等性测试必须将名称视为相等性键。如果两个具有不同名称的对象被它们的 equals() 实现认为是相等的,则行为是未定义的。

所有实现必须保证集合中的所有元素都具有唯一的名称。也就是说,尝试添加一个名称与集合中任何现有对象名称相同的对象将失败。实现可以选择简单地从 add(T) 返回 false 或抛出异常。

集合中的对象可作为只读属性访问,使用对象名称作为属性名称。例如(假设“name”属性提供对象名称)

books.add(new Book(name: "gradle", title: null))
books.gradle.title = "Gradle in Action"

为每个对象添加一个动态方法,该方法接受配置闭包。这等效于调用 NamedDomainObjectCollection.getByName(java.lang.String, groovy.lang.Closure)。例如

books.add(new Book(name: "gradle", title: null))
books.gradle {
  title = "Gradle in Action"
}

您还可以使用 [] 运算符按名称访问集合的对象。例如

books.add(new Book(name: "gradle", title: null))
books['gradle'].title = "Gradle in Action"

Rule 对象可以附加到集合,以便响应按名称请求对象的情况,而集合中不存在具有该名称的对象。此机制可用于按需创建对象。例如

books.addRule('create any') { books.add(new Book(name: "gradle", title: null)) }
books.gradle.name == "gradle"

属性

无属性

方法

方法描述
getByName(name)

按名称查找对象,如果不存在这样的对象则失败。

getByName(name, configureClosure)

按名称查找对象,如果不存在这样的对象则失败。给定的配置闭包在对象从该方法返回之前针对该对象执行。对象作为其委托传递给闭包。

getByName(name, configureAction)

按名称查找对象,如果不存在这样的对象则失败。给定的配置 action 在对象从该方法返回之前针对该对象执行。

named(name)

按名称查找对象,如果不存在这样的对象则失败。

named(name, type)

按名称和类型查找对象,如果不存在这样的对象则失败。

named(name, type, configurationAction)

按名称和类型查找对象,如果不存在这样的对象则失败。给定的配置 action 在对象从 provider 返回之前针对该对象执行。

named(name, configurationAction)

按名称查找对象,如果不存在这样的对象则失败。给定的配置 action 在对象从 provider 返回之前针对该对象执行。

named(nameFilter)
孵化中

返回包含名称与提供的过滤器匹配的对象的集合。返回的集合是实时的,因此当匹配的对象添加到此集合时,它们也会在过滤后的集合中可见。

脚本块

无脚本块

方法详情

T getByName(String name)

按名称查找对象,如果不存在这样的对象则失败。

此操作是立即执行的,并将导致返回的元素被实现。

T getByName(String name, Closure configureClosure)

按名称查找对象,如果不存在这样的对象则失败。给定的配置闭包在对象从该方法返回之前针对该对象执行。对象作为其委托传递给闭包。

此操作是立即执行的,并将导致返回的元素被实现。

T getByName(String name, Action<? super T> configureAction)

按名称查找对象,如果不存在这样的对象则失败。给定的配置 action 在对象从该方法返回之前针对该对象执行。

此操作是立即执行的,并将导致返回的元素被实现。

按名称查找对象,如果不存在这样的对象则失败。

此方法是延迟的,不会导致返回的元素被实现。

NamedDomainObjectProvider<S> named(String name, Class<S> type)

按名称和类型查找对象,如果不存在这样的对象则失败。

此方法是延迟的,不会导致返回的元素被实现。

NamedDomainObjectProvider<S> named(String name, Class<S> type, Action<? super S> configurationAction)

按名称和类型查找对象,如果不存在这样的对象则失败。给定的配置 action 在对象从 provider 返回之前针对该对象执行。

此方法是延迟的,不会导致返回的元素被实现。

NamedDomainObjectProvider<T> named(String name, Action<? super T> configurationAction)

按名称查找对象,如果不存在这样的对象则失败。给定的配置 action 在对象从 provider 返回之前针对该对象执行。

此方法是延迟的,不会导致返回的元素被实现。

注意:此方法正在孵化中,并且可能在 Gradle 的未来版本中更改。

返回包含名称与提供的过滤器匹配的对象的集合。返回的集合是实时的,因此当匹配的对象添加到此集合时,它们也会在过滤后的集合中可见。

此方法是中间操作。它不会更改集合中元素的已实现/未实现状态。