import java.util.function.Supplier; class EnumValues { { Supplier> supplier = () -> new C<>(ABC::values); } private static interface I { T get(); } private static class C implements I { C(Supplier supplier) {} @Override public E get() { return null; } } private static enum ABC { A, B, C } }