假如我這樣做是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',忽略' –