String::compareTo
Javaは、 を呼び出すときに使用するメソッド参照をどのように認識しますCollections.sort(someListOfStrings, String::compareTo);
か? は静的ではなく、比較の「左側」compareTo
を知る必要があります。value
2706 次
2 に答える
15
Comparator
インターフェイスにメソッド参照を使用するとします。
Comparator<String> cmp = String::compareTo;
cmp.compare(left, right)
(「単一の抽象メソッド」またはインターフェイスの「SAM」 )を呼び出すとComparator
、魔法が発生します。
int result = cmp.compare(left, right);
| |
/------------------------/ |
| /---------------/
| |
left.compareTo(right);
基本的にSAMのパラメータはすべて参照先のメソッドのパラメータに変換されますがthis
、左側にあるオブジェクトもパラメータとしてカウントされます。
于 2015-09-06T04:08:10.073 に答える