import java.util.function.Function; interface Test { static Inner go(T t, Function f) { return new Inner<>(); } class Inner implements Test { Inner go(T t, Function f) { return new Inner<>(); } } } class App { void run(Test.Inner go) { Test.Inner test = go.go(1, (Integer i) -> i); } }