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)

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

named(name)

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

named(name, type)

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

named(name, type, configurationAction)

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

named(name, configurationAction)

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

named(nameFilter)
孵化中

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

脚本块

无脚本块

方法详情

T getByName(String name)

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

此操作是急切的,并将导致返回的元素被实现。

T getByName(String name, Closure configureClosure)

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

此操作是急切的,并将导致返回的元素被实现。

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

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

此操作是急切的,并将导致返回的元素被实现。

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

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

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

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

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

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

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

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

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

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

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

注意:此方法处于孵化中,可能会在 Gradle 的未来版本中更改。

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

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