Я пытаюсь понять концепцию ссылок на метод.
Когда я пробовал разные звонки, я наткнулся на сценарий, который я не могу полностью понять.
Когда canClim
используется без параметра, его можно без проблем передать в forEach
, хотя forEach
принимает Потребителя, который должен принимать параметр? При добавлении параметра в canClim
это мешает компиляции?
Однако, когда canClim
объявлен как статический, он не будет компилироваться без добавления статического void canClim(Animal a)
к подписи.
Разве нельзя вызывать статический метод без экземпляра класса Animal, потому что он статический?
Спасибо!
import java.util.*;
class Animal {
void canClim() {
System.out.println("I am a climber!");
}
}
public class MethodReferencer {
public static void main(String[] args) {
Animal a = new Animal();
Animal b = new Animal();
List<Animal> list = new ArrayList<>(Arrays.asList(a, b));
list.forEach(Animal::canClim);
}
}