ZNPCsPlus/spigot/src/main/java/lol/pyr/znpcsplus/util/LazyLoader.java
2023-04-29 19:42:04 +01:00

24 lines
544 B
Java

package lol.pyr.znpcsplus.util;
public class LazyLoader <T> {
private final ObjectProvider<T> provider;
private T value;
private LazyLoader(ObjectProvider<T> provider) {
this.provider = provider;
}
public T get() {
if (value == null) value = provider.provide();
return value;
}
public static <T> LazyLoader<T> of(ObjectProvider<T> provider) {
return new LazyLoader<>(provider);
}
@FunctionalInterface
public interface ObjectProvider<T> {
T provide();
}
}