已知子类型 |
|
---|
一个 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) | 孵化中 返回一个包含名称匹配提供过滤器的对象的集合。返回的集合是动态的,因此当匹配的对象被添加到此集合时,它们在过滤后的集合中也可见。 |
按名称查找对象,如果不存在此类对象则失败。在从该方法返回对象之前,会针对该对象执行给定的配置闭包。对象将作为其委托传递给闭包。
此操作是急切(eager)的,将导致返回的元素被实现(realized)。
按名称查找对象,如果不存在此类对象则失败。在从该方法返回对象之前,会针对该对象执行给定的配置操作(action)。
此操作是急切(eager)的,将导致返回的元素被实现(realized)。
NamedDomainObjectProvider
<T
>
named
(String
name)
NamedDomainObjectProvider
<T
>按名称查找对象,如果不存在此类对象则失败。
此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。
NamedDomainObjectProvider
<S
>
named
(String
name, Class
<S
>
type)
NamedDomainObjectProvider
<S
>Class
<S
>按名称和类型查找对象,如果不存在此类对象则失败。
此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。
NamedDomainObjectProvider
<S
>
named
(String
name, Class
<S
>
type, Action
<? super S
>
configurationAction)
NamedDomainObjectProvider
<S
>Class
<S
>Action
<? super S
>按名称和类型查找对象,如果不存在此类对象则失败。在从提供者返回对象之前,会针对该对象执行给定的配置操作(action)。
此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。
NamedDomainObjectProvider
<T
>
named
(String
name, Action
<? super T
>
configurationAction)
NamedDomainObjectProvider
<T
>Action
<? super T
>按名称查找对象,如果不存在此类对象则失败。在从提供者返回对象之前,会针对该对象执行给定的配置操作(action)。
此方法是延迟(lazy)的,不会导致返回的元素被立即实现(realized)。
NamedDomainObjectCollection
<T
>
named
(Spec
<String
>
nameFilter)
NamedDomainObjectCollection
<T
>Spec
<String
>注意:此方法目前处于孵化中,未来版本的 Gradle 可能会发生变化。
返回一个包含名称匹配提供过滤器的对象的集合。返回的集合是动态的,因此当匹配的对象被添加到此集合时,它们在过滤后的集合中也可见。
此方法是一个中间操作。它不会改变集合中元素的实现/未实现状态。