已知子類型 |
|
---|
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) | 孵化中 傳回包含名稱符合所提供篩選器的物件的集合。傳回的集合是即時的,因此當符合的物件新增至此集合時,它們也會在篩選後的集合中可見。 |
依名稱尋找物件,如果沒有此物件則失敗。給定的組態閉包在物件從此方法傳回之前,會針對該物件執行。物件會作為其委派傳遞給閉包。
此操作是急切的,將導致傳回的元素被實現。
依名稱尋找物件,如果沒有此物件則失敗。給定的組態動作在物件從此方法傳回之前,會針對該物件執行。
此操作是急切的,將導致傳回的元素被實現。
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
>依名稱和類型尋找物件,如果沒有此物件則失敗。給定的組態動作在物件從提供者傳回之前,會針對該物件執行。
此方法是延遲的,不會導致傳回的元素被實現。
NamedDomainObjectProvider
<T
>
named
(String
name, Action
<? super T
>
configurationAction)
NamedDomainObjectProvider
<T
>Action
<? super T
>依名稱尋找物件,如果沒有此物件則失敗。給定的組態動作在物件從提供者傳回之前,會針對該物件執行。
此方法是延遲的,不會導致傳回的元素被實現。
NamedDomainObjectCollection
<T
>
named
(Spec
<String
>
nameFilter)
NamedDomainObjectCollection
<T
>Spec
<String
>注意:此方法正在孵化中,並可能在 Gradle 的未來版本中變更。
傳回包含名稱符合所提供篩選器的物件的集合。傳回的集合是即時的,因此當符合的物件新增至此集合時,它們也會在篩選後的集合中可見。
此方法是中繼操作。它不會變更集合中元素的已實現/未實現狀態。