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

2022-09-01 21:13:27
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)

感谢您的帮助!


答案 1

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

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


答案 2

推荐