10

String::compareToJavaは、 を呼び出すときに使用するメソッド参照をどのように認識しますCollections.sort(someListOfStrings, String::compareTo);か? は静的ではなく、比較の「左側」compareToを知る必要があります。value

4

2 に答える 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 に答える