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