2016-08-03 16 views
0

zu verwenden Ich habe Projekt in Java7, die ich jetzt zu Java8 konvertieren möchte.Wann funktionale Schnittstellen in JAVA 8

Darin habe ich einen Code, der eine Methode aufruft, die ich wie unten in Java 8 konvertiert habe.

JAVA 7:

Long id=10; 
Student student= Student.findById(id); 

JAVA 8

Long id=10; 
Function<Long,Student> f=Student::findById; 
f.apply(id); 

Nun meine Frage es keinen Sinn nicht das Verfahren zur Umwandlung Anrufe wie diese JAVA 8.

Wenn ja, welchen Unterschied zwischen dem obigen Code in Java 7 und Java 8.

ist Kann jemand Bitte klären Sie dies ???

+2

Es ist nicht ratsam, jede Zeile mit neuen Java 8-Funktionen zu konvertieren. Manchmal kann es deinen * alten netten Code * durcheinanderbringen. –

Antwort

2

In Ihrem Java 7-Beispiel rufen Sie findById() in Zeile 2 auf und weisen das Ergebnis dem Schüler zu. Wenn Sie in Ihrem ausgeschnittenen Java-8-Code Methodenreferenzen verwenden, speichern Sie zunächst einen Verweis auf die Methode findById() in f und rufen diese Methode in Zeile 3 auf. Methodenverweise bieten Ihnen die Möglichkeit, den Aufruf von Methoden zu verzögern. In Kombination mit Streams können Sie auf diese Weise erreichen.

Für Sie Beispiel ist es nicht sinnvoll, Methodenreferenzen zu verwenden, da sie Ihnen keinen Vorteil bringen. Wenn Sie den Methodenverweis an eine andere Funktion übergeben oder den Aufruf verzögern möchten, können Methodenverweise sinnvoll sein. Sonst verwirren Sie Ihren Code nur mit expliziten Apply-Aufrufen.

Ich empfehle, Java 8 Einführungen mit Beispielen zu betrachten. Ich lese das Buch Functional Programming in Java und kann es nur empfehlen.

+0

Danke für die Hilfe! – Prakash