// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data.preferences;
import java.util.Objects;
/**
* Base abstract class of all settings, holding the setting value.
*
* @param <T> The setting type
* @since 9759
*/
public abstract class AbstractSetting<T> implements Setting<T> {
protected final T value;
protected Long time;
protected boolean isNew;
/**
* Constructs a new {@code AbstractSetting} with the given value
* @param value The setting value
*/
public AbstractSetting(T value) {
this.value = value;
this.time = null;
this.isNew = false;
}
@Override
public T getValue() {
return value;
}
@Override
public void setTime(Long time) {
this.time = time;
}
@Override
public Long getTime() {
return this.time;
}
@Override
public void setNew(boolean isNew) {
this.isNew = isNew;
}
@Override
public boolean isNew() {
return isNew;
}
@Override
public String toString() {
return value != null ? value.toString() : "null";
}
@Override
public int hashCode() {
return Objects.hash(value);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
return Objects.equals(value, ((AbstractSetting<?>) obj).value);
}
}