JShell 中声明的方法是 lambdas?
Method declared in JShell are lambdas?
我有点好奇在 JShell 中声明的方法是如何在后台实现的。
例如.
int add(int x,int y){
return x+y;
}
是上面声明的 BiFunction 的方法实例吗?
可能是一个愚蠢的问题,但只是出于好奇。
这是一个很普通的方法,为什么要创建成BiFunction
?当然,除非你告诉它。
有一个名为 jdk.jshell.JShell
的顶层 class 保存此方法(或任何其他状态);但你不能用它来声明方法引用:
jshell> int add(int x, int y) { return x + y; }
意思是这行不通:
jshell> BiFunction<Integer, Integer> by = JShell::add; // or this::add
您必须将 add
方法包装在 class:
中
jshell> class Foo { static int add(int x, int y) { return x + y; } ...
然后赋值:
jshell> BiFunction<Integer, Integer, Integer> bi = Foo::add;
bi ==> $Lambda/1757676444@ae45eb6
我有点好奇在 JShell 中声明的方法是如何在后台实现的。
例如.
int add(int x,int y){
return x+y;
}
是上面声明的 BiFunction 的方法实例吗? 可能是一个愚蠢的问题,但只是出于好奇。
这是一个很普通的方法,为什么要创建成BiFunction
?当然,除非你告诉它。
有一个名为 jdk.jshell.JShell
的顶层 class 保存此方法(或任何其他状态);但你不能用它来声明方法引用:
jshell> int add(int x, int y) { return x + y; }
意思是这行不通:
jshell> BiFunction<Integer, Integer> by = JShell::add; // or this::add
您必须将 add
方法包装在 class:
jshell> class Foo { static int add(int x, int y) { return x + y; } ...
然后赋值:
jshell> BiFunction<Integer, Integer, Integer> bi = Foo::add;
bi ==> $Lambda/1757676444@ae45eb6