# Interface ListProperty<T>

Type Parameters:
  `T` - the type of elements.

All Superinterfaces:
  `HasConfigurableValue, HasMultipleValues<T>, Provider<List<T>>, SupportsConvention`

@ManagedType public interface ListProperty<T> extends Provider<List<T>>, HasMultipleValues<T>
Represents a property whose type is a `List` of elements of type `T`.

Instances of this interface are not thread-safe for reading and writing. It is not safe to share the same ListProperty instance between different projects.

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

Since:
  4.3
See Also:
  - Create an instance of this as a managed property (preferred).
  - Create an instance of this manually.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ListProperty<T>`
  `convention(@Nullable Iterable<? extends T> elements)`
  Specifies the value to use as the convention for this property.
  `ListProperty<T>`
  `convention(Provider<? extends Iterable<? extends T>> provider)`
  Specifies the provider of the value to use as the convention for this property.
  `ListProperty<T>`
  `empty()`
  Sets the value of this property to an empty collection, and replaces any existing value.
  `ListProperty<T>`
  `unset()`
  Unsets this object's explicit value, allowing the convention to be selected when evaluating this object's value.
  `ListProperty<T>`
  `unsetConvention()`
  Unsets this object's convention value.
  `ListProperty<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.
  `ListProperty<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 HasConfigurableValue

  `disallowChanges, disallowUnsafeRead, finalizeValueOnRead`

  ### Methods inherited from interface HasMultipleValues

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

  ### Methods inherited from interface Provider

  `filter, flatMap, get, getOrElse, getOrNull, isPresent, map, orElse, orElse, zip`

- ## Method Details

  - ### empty

    ListProperty<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

    ListProperty<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

    ListProperty<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

    ListProperty<T> convention(@Nullable 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

    ListProperty<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

  - ### unset

    ListProperty<T> unset()
    Unsets this object's explicit value, allowing the convention to be selected when evaluating this object's value.

    This is similar to calling `value(Iterable)` with a `null` argument.

    Specified by:
      `unset` in interface `SupportsConvention`

  - ### unsetConvention

    ListProperty<T> unsetConvention()
    Unsets this object's convention value.

    This is similar to calling `convention(Iterable)` with a `null` argument.

    Specified by:
      `unsetConvention` in interface `SupportsConvention`