Comparator<T> & Serializable这行代码是什么意思呢

Comparator & Serializable这行代码是什么意思呢?

img

表面上理解确实不好理解。
意思是,将lambda表达式的返回值返回给具有多个接口实现的类型。
如果没有(Comparator & Serializable),那么类型默认就是接收的类型,如果想在此基础上扩展接口,则用(A & B & C)的形式。
怎么验证了,也很简单,用instanceof。

interface MyComparator{
    int compare(int a,int b);
}
MyComparator comparator = (MyComparator & Serializable)(c1, c2)->
            Integer.compare(3,2)
        ;
        System.out.println(comparator instanceof MyComparator); // true
        System.out.println(comparator instanceof Serializable); // true
        System.out.println(comparator instanceof Cloneable); // false

MyComparator comparator = (MyComparator & Serializable & Cloneable)(c1, c2)->
            Integer.compare(3,2)
        ;
        System.out.println(comparator instanceof MyComparator); // true
        System.out.println(comparator instanceof Serializable); // true
        System.out.println(comparator instanceof Cloneable); // true

img


注释写了Comparator 是返回类型,Serializable表示如果入参可序列化,那返回的比较器也可序列化
这个写法我也是确实第一次见,等个大神详细解释

指定同时满足多种泛型