- Type Parameters:
T- the type of the wrapped value
- All Superinterfaces:
Consumer<T>,EventObserver<T>,Supplier<T>,ValueObserver<T>
- All Known Subinterfaces:
PropertyValue<T>,State,ValueList<T>,Values<T,,C> ValueSet<T>
- All Known Implementing Classes:
AbstractValue
An observable wrapper for a value.
A factory for
Value instances.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceValue.Builder<T,B extends Value.Builder<T, B>> Builds aValueinstance.static enumSpecifies when a Value instance notifies its listeners.static interfaceAValue.ValidatorforValues. -
Method Summary
Modifier and TypeMethodDescriptiondefault voidSets the value.booleanaddValidator(Value.Validator<? super T> validator) Adds a validator to thisValue.voidclear()Clears this value, by setting it to null or the null value in case this is a non-null value.voidCreates a bidirectional link between this and the given original value, so that changes in one are reflected in the other.voidlink(ValueObserver<T> originalValue) Creates a unidirectional link between this value and the given original value observer, so that changes in the original value are reflected in this one.default booleanSets a new value mapped from the current value.static <T> Value.Builder<T,?> nonNull(T nullValue) static <T> Value.Builder<T,?> nullable()static <T> Value.Builder<T,?> nullable(T initialValue) observer()Returns aValueObservernotified each time this value changes.booleanremoveValidator(Value.Validator<? super T> validator) Removes the given validator from this valuebooleanSets the value.voidUnlinks this value from the given original valuevoidunlink(ValueObserver<T> originalValue) Unlinks this value from the given original value observervoidValidate the given value using all validatorsstatic <T> Value<T>value()Creates a newValueinstance, wrapping a null initial value, usingValue.Notify.WHEN_CHANGED.Methods inherited from interface is.codion.common.event.EventObserver
addConsumer, addListener, addWeakConsumer, addWeakListener, removeConsumer, removeListener, removeWeakConsumer, removeWeakListenerMethods inherited from interface is.codion.common.value.ValueObserver
isEqualTo, isNotEqualTo, isNotNull, isNull, isNullable, optional
-
Method Details
-
accept
Sets the value. Note that change listener notifications depend on theValue.Notifypolicy associated with this value.- Specified by:
acceptin interfaceConsumer<T>- Parameters:
value- the value- Throws:
IllegalArgumentException- in case the given value is invalid- See Also:
-
set
Sets the value. Note that change listener notifications depend on theValue.Notifypolicy associated with this value.- Parameters:
value- the value- Returns:
- true if the underlying value changed
- Throws:
IllegalArgumentException- in case the given value is invalid- See Also:
-
clear
void clear()Clears this value, by setting it to null or the null value in case this is a non-null value. -
map
Sets a new value mapped from the current value.Value<Integer> value = Value.value(0); // increment the value by one value.map(currentValue -> currentValue + 1);- Parameters:
mapper- maps from the current value to a new value- Returns:
- true if the underlying value changed
- Throws:
NullPointerException- in casemapperis null
-
observer
ValueObserver<T> observer()Returns aValueObservernotified each time this value changes.- Returns:
- a
ValueObserverfor this value
-
link
Creates a bidirectional link between this and the given original value, so that changes in one are reflected in the other. Note that after a call to this method this value is the same asoriginalValue.- Parameters:
originalValue- the original value to link this value to- Throws:
IllegalStateException- in case the values are already linkedIllegalArgumentException- in case the original value is not valid according to this values validators
-
unlink
Unlinks this value from the given original value- Parameters:
originalValue- the original value to unlink from this one- Throws:
IllegalStateException- in case the values are not linked
-
link
Creates a unidirectional link between this value and the given original value observer, so that changes in the original value are reflected in this one. Note that after a call to this method the value of this value is the same as the original value.- Parameters:
originalValue- the original value to link this value to- Throws:
IllegalArgumentException- in case the original value is not valid according to this values validators
-
unlink
Unlinks this value from the given original value observer- Parameters:
originalValue- the original value to unlink
-
addValidator
Adds a validator to thisValue. Adding the same validator again has no effect.- Parameters:
validator- the validator- Returns:
- true if this value did not already contain the specified validator
- Throws:
IllegalArgumentException- in case the current value is invalid according to the validator
-
removeValidator
Removes the given validator from this value- Parameters:
validator- the validator- Returns:
- true if this value contained the specified validator
-
validate
Validate the given value using all validators- Parameters:
value- the value to validate- Throws:
IllegalArgumentException- in case the given value is invalid according to a validator
-
value
Creates a newValueinstance, wrapping a null initial value, usingValue.Notify.WHEN_CHANGED.- Type Parameters:
T- the value type- Returns:
- a Value for the given type
-
nonNull
- Type Parameters:
T- the value type- Parameters:
nullValue- the actual value to use when the value is set to null- Returns:
- a builder for a non-null Value
-
nullable
- Type Parameters:
T- the value type- Returns:
- a builder for a nullable Value
-
nullable
- Type Parameters:
T- the value type- Parameters:
initialValue- the initial value- Returns:
- a builder for a nullable Value
-