假如我这样做是jshell:有没有办法在jshell中使用顶级函数的方法引用?
jshell> void printIsEven(int i) {
...> System.out.println(i % 2 == 0);
...> }
| created method printIsEven(int)
jshell> List<Integer> l = Arrays.asList(7,5,4,8,5,9);
l ==> [7, 5, 4, 8, 5, 9]
jshell> l.forEach(/* ??? */); // is it possible to use a method reference here?
在一个正常的程序,我可以在一个名为MyClass
类的静态背景下,非静态上下文或l.forEach(MyClass::printIsEven)
写l.forEach(this::printIsEven)
。
在jshell使用this::printIsEven
不起作用,因为jshell在静态上下文中执行语句,但因为没有类名的前缀::printIsEven
,并试图l.forEach(::printIsEven)
只是一个语法错误,你不能用静态方法的参考。
我没有用过JShell,但你不能让方法静态? –
@ChandlerBing不,产生'顶级声明中不允许使用'Modifier'static',忽略' –