问题描述
String[] arr = {"First","Second","Third","Fourth"};
Arrays.sort(arr,String::comparetoIgnoreCase); //can compile
Arrays.sort(arr,"a"::comparetoIgnoreCase); //can't compile
- 为什么“ a” :: comparetoIgnoreCase无法编译?如果我们可以说String :: comparetoIgnoreCase具有隐式String参数(this),为什么我们不能说“ a” :: comparetoIgnoreCase具有隐式“ a”作为参数? (“ a”与“ First”进行比较,“ a”与“ Second”进行比较.....)
解决方法
"a"::compareToIgnoreCase
是对单个参数方法的方法引用,该方法将给定的String
与String
“ a”进行比较。隐式参数始终等于“ a”。
Comparator
的{{1}}方法需要两个给定的Compare
实例。
也许如果您将方法引用写为lambda表达式,那会更清楚:
String