sta*_*onk 9 java-8 method-reference
Java如何知道String::compareTo调用时使用哪个方法引用Collections.sort(someListOfStrings, String::compareTo);?compareTo不是静态的,它需要知道value比较的"左手边".
Tag*_*eev 13
假设您使用Comparator接口的方法引用:
Comparator<String> cmp = String::compareTo;
Run Code Online (Sandbox Code Playgroud)
当你调用cmp.compare(left, right)(这是接口的"单一抽象方法"或"SAM" Comparator)时,会产生魔力:
int result = cmp.compare(left, right);
| |
/------------------------/ |
| /---------------/
| |
left.compareTo(right);
Run Code Online (Sandbox Code Playgroud)
基本上SAM的所有参数都被转换为参考方法的参数,但是this对象(在左侧)也被计为参数.
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |