mherod
8/1/2017 - 11:24 AM

Lazily.java

/**
 * Created by matthewherod on 01/08/2017.
 */

public class Lazily<T> {

    private final LazyInit<T> initLazily;

    public T instance;

    public Lazily(final LazyInit<T> initLazily) {
        this.initLazily = initLazily;
    }

    public T get() {

        if (this.instance == null) {

            synchronized (Lazily.class) {

                if (this.instance == null) {
                    this.instance = this.initLazily.init();
                }
            }
        }
        return this.instance;
    }

    public interface LazyInit<T> {
        T init();
    }
}