我越来越知道lambda语法和删除的对象都来的东西,逗我的脑海:当我尝试使用的代码的最后一行删除对象与拉姆达
private ArrayList<Person> list = new ArrayList<>();
public void remove(Person person){
this.list.remove(person);
}
public void run(){
list.stream().filter(p -> p.getAge() > 15).forEach(p -> p.setAge(p.getAge() + 1));
list.stream().filter(p -> p.getAge() > 15).forEach(PersonDatabase::remove);; //Syntax error
}
,我得到一个错误说该方法不是静态的。为什么我不能参考我已经在的课程,但是当我使用也不是静态的Person::getName
时,它工作正常吗?
'list.removeIf(p - > p.getAge()> 15)有什么问题;'? –
@AlexisC,不会导致调用PersonDatabase.remove。 – aioobe
@aioobe我知道这不是问题的主要观点,但是'PersonDatabase.remove'只在列表中调用'remove'。我只想指出,现在这种方法是无用的,你可以直接过滤列表。 –