我越來越知道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'。我只想指出,現在這種方法是無用的,你可以直接過濾列表。 –