Wie bildet sich ein Lambda-Ausdruck in eine funktionale Schnittstelle ein?

8

Schauen wir uns den folgenden Code an.

%Vor%

Und dann schauen wir uns einfach die javadoc für streams.map . Dort erscheint die Signatur für map methode so.

%Vor%

Kann jemand bitte erklären, wie JVM den von uns angegebenen Lambda-Ausdruck ( name -> name.length() ) in Function<? super T,? extends R> mapper ? ordnet?

    
Supun Wijerathne 16.10.2017, 12:48
quelle

2 Antworten

8

A Function ist etwas, das X und Y zurückgibt.

%Vor%

Im Grunde mit name -> name.length() implementieren Sie @FunctionlInterface Function<T,R> mit dem Überschreiben der einzelnen abstrakten Methode R apply(T t) .

Sie können das auch mit einer Methodenreferenz verkürzen:

%Vor%     
Eugene 16.10.2017, 12:50
quelle
2

Überprüfen Sie apply Methode von Function :

%Vor%

? extends R ist der Rückgabetyp, ? super T ist der Typ

Da die Function -Klasse nur eine nicht standardmäßige Methode public hat, kann sie Ihr Lambda der Function -Instanz

zuordnen     
ByeBye 16.10.2017 12:51
quelle