Package org.gradle.api.provider

## Interface SetProperty<T>

- Type Parameters:
    `T` - the type of elements.
  All Superinterfaces:
    `HasConfigurableValue`, `HasMultipleValues<T>`, `Provider<Set<T>>`

      public interface SetProperty<T>
      extends Provider<Set<T>>, HasMultipleValues<T>

  Represents a property whose type is a `Set` of elements of type `SetProperty`. Retains iteration order.

  You can create a `SetProperty` instance using factory method `ObjectFactory.setProperty(Class)`.

  Note: This interface is not intended for implementation by build script or plugin authors.

  Since:
    4.5

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `SetProperty<T>` | `convention​(Iterable<? extends T> elements)` | Specifies the value to use as the convention for this property.
    `SetProperty<T>` | `convention​(Provider<? extends Iterable<? extends T>> provider)` | Specifies the provider of the value to use as the convention for this property.
    `SetProperty<T>` | `empty()` | Sets the value of this property to an empty collection, and replaces any existing value.
    `SetProperty<T>` | `value​(Iterable<? extends T> elements)` | Sets the value of the property to the elements of the given iterable, and replaces any existing value.
    `SetProperty<T>` | `value​(Provider<? extends Iterable<? extends T>> provider)` | Sets the property to have the same value of the given provider, and replaces any existing value.

    - ### Methods inherited from interface org.gradle.api.provider.HasConfigurableValue

      `disallowChanges, disallowUnsafeRead, finalizeValueOnRead`

    - ### Methods inherited from interface org.gradle.api.provider.HasMultipleValues

      `add, add, addAll, addAll, addAll, finalizeValue, set, set`

    - ### Methods inherited from interface org.gradle.api.provider.Provider

      `flatMap, forUseAtConfigurationTime, get, getOrElse, getOrNull, isPresent, map, orElse, orElse`

- - ### Method Detail

    - #### empty

          SetProperty<T> empty()

      Sets the value of this property to an empty collection, and replaces any existing value.
      Specified by:
        `empty` in interface `HasMultipleValues<T>`
      Returns:
        this property.

    - #### value

          SetProperty<T> value​(@Nullable
                               Iterable<? extends T> elements)

      Sets the value of the property to the elements of the given iterable, and replaces any existing value. This property will query the elements of the iterable each time the value of this property is queried.

      This is the same as `HasMultipleValues.set(Iterable)` but returns this property to allow method chaining.

      Specified by:
        `value` in interface `HasMultipleValues<T>`
      Parameters:
        `elements` - The elements, can be null.
      Returns:
        this

    - #### value

          SetProperty<T> value​(Provider<? extends Iterable<? extends T>> provider)

      Sets the property to have the same value of the given provider, and replaces any existing value. This property will track the value of the provider and query its value each time the value of this property is queried. When the provider has no value, this property will also have no value.

      This is the same as `HasMultipleValues.set(Provider)` but returns this property to allow method chaining.

      Specified by:
        `value` in interface `HasMultipleValues<T>`
      Parameters:
        `provider` - Provider of the elements.
      Returns:
        this

    - #### convention

          SetProperty<T> convention​(Iterable<? extends T> elements)

      Specifies the value to use as the convention for this property. The convention is used when no value has been set for this property.
      Specified by:
        `convention` in interface `HasMultipleValues<T>`
      Parameters:
        `elements` - The elements, or `null` when the convention is that the property has no value.
      Returns:
        this

    - #### convention

          SetProperty<T> convention​(Provider<? extends Iterable<? extends T>> provider)

      Specifies the provider of the value to use as the convention for this property. The convention is used when no value has been set for this property.
      Specified by:
        `convention` in interface `HasMultipleValues<T>`
      Parameters:
        `provider` - The provider of the elements
      Returns:
        this