java.util.function.Function.compose()如何工作?

时间:2015-03-13 21:23:26

标签: lambda java-8

Java 1.8中的功能接口Function实现了compose(),如下所示:

default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
    Objects.requireNonNull(before);
    return (V v) -> apply(before.apply(v));
}

我对lambda表达式的理解(可能不正确)是上面的return语句是语法糖:

    return new Function<V, R>() {
        R apply(V v) {
            return apply(before.apply(v));
        }};

此声明是非法的,因为作为接口,Function<V, R>不应该是可实例化的。那么上面的方法是如何工作的呢?

1 个答案:

答案 0 :(得分:2)

不,它不是匿名类的语法糖。

即使是这样,您发布的代码也不会实例化接口。它实例化一个实现该接口的匿名类。

阅读Java tutorial about anonymous inner classes