package ezdb;
//@NotThreadSafe
public abstract class LazyGetter<T> {
private T value;
private boolean valueShouldBeNull;
public final T get(){
if(valueShouldBeNull){
return null;
}else{
if(value == null){
value = internalGet();
if(value == null){
//do not call maybe slow serde again
valueShouldBeNull = true;
}
}
return value;
}
}
protected abstract T internalGet();
}