import java.util.function.Consumer; import java.util.function.Function; class Example { Example(Function, Void>, Void>, Void> innerClass) { new InnerClass(innerClass); } void foo(Void v) { } class InnerClass { InnerClass(Function, Void>, Void>, Void> factory) { this(factory.apply(o -> o.apply(Example.this::foo))); } InnerClass(Void unused) { } } public static void main(String[] args) { new Example(o -> null); } }