package org.tessell.util.factory; public class Lazy<T> { private final Factory<T> factory; private T value; private boolean gotten = false; public static <T> Lazy<T> of(final Factory<T> maker) { return new Lazy<T>(maker); } public Lazy(final Factory<T> maker) { factory = maker; } public T get() { if (!gotten) { value = factory.create(); gotten = true; } return value; } }