package com.yoursway.commons.dependencies.internal; import com.yoursway.commons.dependencies.IdentityObject; import com.yoursway.commons.dependencies.MutableValueObject; import com.yoursway.commons.dependencies.Value; public class ObservableValue<T> extends MutableValueObject implements Value<T> { private T value; public ObservableValue(IdentityObject owner, T initialValue) { super(owner); if (initialValue == null) throw new NullPointerException("initialValue is null"); this.value = initialValue; } public T get() { willQuery(); return value; } public void set(T value) { if (value == null) throw new NullPointerException("value is null"); this.value = value; didChange(); } }