返回值中的“&”字符是什么意思?

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)
感谢您的帮助!

请查看15.16. Cast Expressions - CamelCamelius
1个回答

25

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

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


5
嗯,在我15年的Java经验中,我从未见过这种情况。每天都有新的学习机会。 :) - MadConan
3
我也是。这就是为什么我喜欢 Stack Overflow(SO)的原因。 :) - Konstantin Yovkov
4
请问您需要将JLS - 5.5. Casting Contexts翻译成简体中文吗?如果是的话,请提供该部分内容。 - Maroun
1
我认为这是Java 8,我将编译器更改为1.4并得到了以下结果:“此行有多个标记 - 在低于1.8的源级别中,转换运算符中不允许使用附加边界。” - Evgeniy Dorofeev
1
请查看15.16. Cast Expressions - CamelCamelius
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接