在JShell中声明的方法是lambdas?

时间:2017-11-06 10:14:32

标签: java lambda java-9 jshell

我有点好奇JShell中声明的方法是如何实现的。

例如

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

高于BiFunction的声明方法实例? 可能是一个愚蠢的问题,但只是为了好奇。

1 个答案:

答案 0 :(得分:3)

这是一种普通的常用方法,为什么会将其创建为BiFunction?当然,除非你告诉它。

有一个名为jdk.jshell.JShell的顶级类持有此方法(或任何其他状态);但你不能用它来声明方法参考:

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

这意味着这不起作用:

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

您必须将add方法包装在一个类中:

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

然后分配它:

jshell> BiFunction<Integer, Integer, Integer> bi = Foo::add;
        bi ==> $Lambda$15/1757676444@ae45eb6