InvokeOnlyOnce.java
package io.github.jonloucks.metalog.impl;
import io.github.jonloucks.metalog.api.Log;
import static io.github.jonloucks.metalog.impl.Internal.logCheck;
final class InvokeOnlyOnce implements Log {
private final Log referent;
private boolean firstTime = true;
InvokeOnlyOnce(Log referent) {
this.referent = logCheck(referent);
}
@Override
public synchronized CharSequence get() {
if (firstTime) {
firstTime = false;
cachedText = referent.get();
}
return cachedText;
}
private volatile CharSequence cachedText;
}