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

Har*_*rry 17 java generics

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));
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助!

Kon*_*kov 15

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

请注意,在执行此类转换时,您只能指定一个类(以及无限量的接口),因为类不可能从多个超类继承.

  • 好吧,在 Java 的 15 年中,我从未见过这种情况。每天学些新东西。:) (4认同)
  • 它在[JLS - 5.5中进行了解释.投射上下文](https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html) (3认同)
  • 我也是.这就是我喜欢SO的原因.:) (2认同)