返回值中“&”字符的含义是什么?


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

我感兴趣的部分是: return (Comparator<T> & Serializable)

谢谢你的帮助!


问题答案:

这意味着结果值将被强制转换为Comparator Serializable(即可序列化的比较器)

请注意,在进行此类转换时,您 只能 指定一个类(和无限数量的接口),因为一个类不可能从一个以上的超类继承。