java 將函數作為參數傳遞


有時為了更好的封裝,需要將函數作為參數進行傳遞,以便更好的復用。

比方說現在有個需求:

  有一個列表,需要根據不同的條件進行篩選,想用filter進行篩選,由於篩選情況較多,難道要寫多個判斷函數么?這時候就需要用到將函數作為參數進行傳遞了。

  Function傳入兩個參數,一個是入參,一個是返回值。這里User是入參,Boolean是返回值。

  使用Function的apply方法,接受入參,處理並返回。

public List<User> getUsersByFilter(Function<User, Boolean> filter) {
    return getUserList().stream().filter(user -> filter.apply(user)).collect(Collectors.toList());
}

  Function的使用如下:直接使用lamboda表達式,user作為入參,boolean返回值

public List<User> getMen() {
    return getUsersByFilter(user -> user.getGender() == 1)
}

  filter中通過apply調用傳入的lamboda函數,有點繞,仔細理解一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM