import java.util.function.Function; import java.util.stream.Stream; class Test { public Long getKey() { return 0L; } public static void main(Stream stream) { stream.map(s -> Inner.of(Test::getKey, s)); } public static final class Inner { public static Inner of(final Object key, final Test value) {return null;} public static Inner of(final Function< T, Long> keyMapper, final Test value) {return null;} } }