在Comparator.comparing中转换为Serializable

时间:2017-03-22 16:55:11

标签: java generics lambda java-8 comparator

java.util.Comparator in the JDK 8 source code,我找到了有趣的代码:

public static <T, U extends Comparable<? super U>> Comparator<T> comparing(Function<? super T, ? extends U> keyExtractor){
        Objects.requireNonNull(keyExtractor);
        // casting to Serializable?
        return (Comparator<T> & Serializable)
            (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
    }

很清楚为什么我们将生成的lambda转换为Comparator<T>,但将其转换为Serializable的目的是什么?

1 个答案:

答案 0 :(得分:3)

根据我所知,使 lambda可序列化。