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)。

named(name, configurationAction)

按名称查找对象,如果不存在此类对象则失败。在从提供者返回对象之前,会针对该对象执行给定的配置操作(action)。

named(nameFilter)
孵化中

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

脚本块

无脚本块

方法详情

T getByName(String name)

按名称查找对象,如果不存在此类对象则失败。

此操作是急切(eager)的,将导致返回的元素被实现(realized)。

T getByName(String name, Closure configureClosure)

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

此操作是急切(eager)的,将导致返回的元素被实现(realized)。

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

按名称查找对象,如果不存在此类对象则失败。在从该方法返回对象之前,会针对该对象执行给定的配置操作(action)。

此操作是急切(eager)的,将导致返回的元素被实现(realized)。

按名称查找对象,如果不存在此类对象则失败。

此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。

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

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

此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。

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

按名称和类型查找对象,如果不存在此类对象则失败。在从提供者返回对象之前,会针对该对象执行给定的配置操作(action)。

此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。

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

按名称查找对象,如果不存在此类对象则失败。在从提供者返回对象之前,会针对该对象执行给定的配置操作(action)。

此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。

注意:此方法目前处于孵化中,未来版本的 Gradle 可能会发生变化。

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

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