0

私は現在java8に変換しようとしているjava7のプロジェクトを持っています。

その中で、以下のようにJava 8に変換したメソッドを呼び出すコードがあります。

ジャワ7:

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

ジャワ8

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

さて、私の質問は、これらのようなメソッド呼び出しをJAVA 8に変換することは意味がありません。

もしそうなら、JAVA 7 と JAVA 8 の上記のコードの違いは何ですか。

誰でもこれを明確にしてもらえますか???

4

1 に答える 1

2

Java 7 の例では、2 行目で findById() を呼び出し、結果を Student に割り当てます。切り取った Java 8 コードでメソッド参照を使用することにより、最初にメソッド findById() への参照を f に保存し、3 行目でそのメソッドを呼び出します。メソッド参照により、メソッドの呼び出しを遅らせることができます。Streams と組み合わせると、この方法で遅延を実現できます。

あなたの例では、メソッド参照を使用しても意味がありません。メソッド参照は何のメリットもありません。メソッド参照を他の関数に渡したい場合、または呼び出しを遅らせたい場合は、メソッド参照を使用するのが理にかなっています。そうしないと、明示的な適用呼び出しでコードが乱雑になります。

例を取り上げた Java 8 の紹介を参照することをお勧めします。私はJavaで関数型プログラミングという本を読みましたが、それをお勧めすることしかできません。

于 2016-08-03T08:59:54.870 に答える