function函數(shù)傳參
我在上個視頻中聽您說到function這個接口有兩個泛型,R和T,然后您又說到我們傳進來的的參數(shù)和返回值都是wrapper對象,您指的是apply這個方法嗎?
FunctionalInterface public?interface?Function<T,?R>?{ ????/** ?????*?Applies?this?function?to?the?given?argument. ?????* ?????*?@param?t?the?function?argument ?????*?@return?the?function?result ?????*/ ????R?apply(T?t);
但是在and()方法里面又沒有調(diào)用apply這個方法啊,我就這里沒有搞懂,望指點
2019-06-15
該函數(shù)式接口聲明了T、R兩個泛型形式參數(shù),在and中,實際傳入的你可以理解為Function接口的匿名實現(xiàn)類,這時候的泛型是實參,T和R都是QueryWrapper。而且and中你要追溯源碼,最后確實調(diào)用apply了,我給你列出最后調(diào)用apply的代碼,在AbstractWrapper類中:
? ? protected Children addNestedCondition(boolean condition, Function<Children, Children> func) {
? ? ? ? return doIt(condition, LEFT_BRACKET, func.apply(instance()), RIGHT_BRACKET);
? ? }
你也可以運行時debug一下,根據(jù)方法調(diào)用棧追蹤一下。
2022-07-07