Предположим, что я делаю это в 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?
В обычной программе я мог написать l.forEach(this::printIsEven)
в нестационарном контексте или l.forEach(MyClass::printIsEven)
в статическом контексте класса с именем MyClass
.
Использование this::printIsEven
в jshell не работает, потому что jshell выполняет инструкции в статическом контексте, но вы не можете использовать ссылку на статический метод, потому что нет имени класса для префикса ::printIsEven
, а попытка l.forEach(::printIsEven)
- это просто синтаксическая ошибка.