您可以编写一个静态方法来执行此操作:
import java.util.function.*;class Test { public static void main(String[] args) { Function<String, Integer> function = combine(String::length, n -> n * 2); System.out.println(function.apply("foo")); } public static <T1, T2, T3> Function<T1, T3> combine( Function<T1, T2> first, Function<T2, T3> second) { return first.andThen(second); }}然后,您可以将其放在实用程序类中并静态导入。
或者,创建一个更简单的静态方法,该方法 只 返回给定的函数,以使编译器知道您在做什么:
import java.util.function.*;class Test { public static void main(String[] args) { Function<String, Integer> function = asFunction(String::length).andThen(n -> n * 2); System.out.println(function.apply("foo")); } public static <T1, T2> Function<T1, T2> asFunction(Function<T1, T2> function) { return function; }}


