私はJShellで宣言されたメソッドがどのようにして実装されているのか少し不思議です。JShellで宣言されたメソッドはlambdasですか?
例えば、
int add(int x,int y){
return x+y;
}
BiFunctionの宣言されたメソッドインスタンスの上にありますか? 愚かな質問かもしれませんが、単に好奇心のためです。
私はJShellで宣言されたメソッドがどのようにして実装されているのか少し不思議です。JShellで宣言されたメソッドはlambdasですか?
例えば、
int add(int x,int y){
return x+y;
}
BiFunctionの宣言されたメソッドインスタンスの上にありますか? 愚かな質問かもしれませんが、単に好奇心のためです。
普通の方法ですが、なぜそれが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]
ちょうど['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