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 的未來版本中變更。

傳回包含名稱符合所提供篩選器的物件的集合。傳回的集合是即時的,因此當符合的物件新增至此集合時,它們也會在篩選後的集合中可見。

此方法是中繼操作。它不會變更集合中元素的已實現/未實現狀態。