# HasConfigurableValue

interface HasConfigurableValue(source)

Represents an object that holds a value that is configurable, meaning that the value or some source for the value, such as a Provider, can be specified directly on the object.

This interface provides methods to manage the lifecycle of the value. Using these methods, the value of the object can be finalized, which means that the value will no longer change. Note that this is not the same as an immutable value. You can think of a finalized value as similar to a `final` variable in Java, so while the value of the variable does not change, the value itself may still be mutable.

When a task property has a value of this type, it will be implicitly finalized when the task starts execution, to prevent accidental changes to the task parameters as the task runs.

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

#### Since

5.6

#### Inheritors

Property
MapProperty
HasMultipleValues
ConfigurableFileCollection

## Functions

disallowChanges
Link copied to clipboard
abstract fun disallowChanges()
Disallows further direct changes to this object.
disallowUnsafeRead
Link copied to clipboard
abstract fun disallowUnsafeRead()
Disallows reading the value of this object when its value may not yet be available or may still change.
finalizeValue
Link copied to clipboard
abstract fun finalizeValue()
Calculates the final value of this object and disallows further changes to this object.
finalizeValueOnRead
Link copied to clipboard
abstract fun finalizeValueOnRead()
Requests that the final value of this object be calculated on the next read of the value, if not already known.