package foo; import java.util.Optional; class Boo { private static class MyGenericClass { public final String field; private MyGenericClass(String field) { this.field = field; } static MyGenericClass create(String field) { return new MyGenericClass<>(field); } } public static void main(String[] args) { Optional value = Optional.of("value"); MyGenericClass myClassValue = value.map(MyGenericClass::create).orElse(null); } }