Verweis auf Methoden mit unterschiedlichen Parametern in Java8

Ich frage mich, wie all das Zeug mit Methodenreferenzen und funktionalen Schnittstellen auf untergeordneter Ebene funktioniert. Das einfachste Beispiel ist, wo wir einige List @ hab

List<String> list = new ArrayList<>();
list.add("b");
list.add("a");
list.add("c"):

Jetzt wollen wir es mit der Collections-Klasse sortieren, damit wir aufrufen können:

Collections.sort(list, String::compareToIgnoreCase);

Aber wenn wir einen benutzerdefinierten Komparator definieren, könnte dies etwa so aussehen:

Comparator<String> customComp = new MyCustomOrderComparator<>();
Collections.sort(list, customComp::compare);

Das Problem ist, dass Collections.sort zwei Parameter akzeptiert: List und Comparator. Da Comparator eine funktionale Schnittstelle ist, kann sie durch einen Lambda-Ausdruck oder eine Methodenreferenz mit derselben Signatur (Parameter und Rückgabetyp) ersetzt werden. Wie funktioniert es, dass wir auch einen Verweis auf compareTo übergeben können, der nur einen Parameter akzeptiert und dessen Signaturen nicht übereinstimmen? Wie werden die Methodenreferenzen in Java8 übersetzt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage