看Java的源码Map的接口Entry<K,V>时看不懂其内方法的书写方式
public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K,V>> comparingByKey() {
return (Comparator<Map.Entry<K, V>> & Serializable)
(c1, c2) -> c1.getKey().compareTo(c2.getKey());
}
看不懂这种写法。求解释!
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
(Comparator<Map.Entry<K, V>> & Serializable)表示将结果强制转换为一个实现了Serializable接口的Comparator对象
这是Java8的语法,表示同时强制转换为多种类型
(c1, c2)->c1.getKey().compareTo(c2.getKey())相当于匿名内部类:
new Comparator<T>(){
@Override
public int compare(T c1, T c2) {
return c1.getKey().compareTo(c2.getKey());
}
}
同样是Java8的语法,Lambda表达式
添加回答
举报
0/150
提交
取消