2017-11-06 5 views
3

私はJShellで宣言されたメソッドがどのようにして実装されているのか少し不思議です。JShellで宣言されたメソッドはlambdasですか?

例えば、

int add(int x,int y){ 
return x+y; 
} 

BiFunctionの宣言されたメソッドインスタンスの上にありますか? 愚かな質問かもしれませんが、単に好奇心のためです。

+2

ちょうど['MethodSnippet'](https://docs.oracle.com/javase/9​​/docs/api/jdk/jshell/MethodSnippet.html)と私はJShellが主に[' Snippet']に依存していると信じていますhttps://docs.oracle.com/javase/9​​/docs/api/jdk/jshell/Snippet.html)とその評価を参照してください。私はあなたにその型/サブクラスを読んでほしいと言っています。おそらく、私は、この質問がJShellがスニペットをどのように評価するのかにはならないことを願っています。 – nullpointer

答えて

3

普通の方法ですが、なぜそれがBiFunctionとして作成されるのですか?もちろん、あなたがそれを教えない限り。

このメソッド(または他の状態)を保持するjdk.jshell.JShellという最上位クラスがあります。

jshell> class Foo { static int add(int x, int y) { return x + y; } ... 

jshell> BiFunction<Integer, Integer> by = JShell::add; // or this::add 

あなたはクラスでそのaddメソッドをラップする必要があります:これは動作しないでしょう

jshell> int add(int x, int y) { return x + y; } 

は意味:あなたは、メソッドの参照を宣言するためにそれを使用することはできません

これを割り当てます:

jshell> BiFunction<Integer, Integer, Integer> bi = Foo::add; 
     bi ==> $Lambda$15/[email protected] 
+0

ここで私はjdk.jshell.Jshellクラスの詳細を取得できますが、どのリンクも非常に高く評価されていますか? – optional

+2

@Mukeshkumarsainiあなたはグーグルをやってみましたか?真剣に、最初の10の検索では、これについての非常に大きな画像を与えるでしょう – Eugene

+1

https://docs.oracle.com/javase/9​​/docs/api/jdk/jshell/package-summary.htmlここにありがとう – optional

関連する問題