function函數(shù)傳參
我在上個(gè)視頻中聽您說(shuō)到function這個(gè)接口有兩個(gè)泛型,R和T,然后您又說(shuō)到我們傳進(jìn)來(lái)的的參數(shù)和返回值都是wrapper對(duì)象,您指的是apply這個(gè)方法嗎?
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這個(gè)方法啊,我就這里沒有搞懂,望指點(diǎn)
2019-06-15
該函數(shù)式接口聲明了T、R兩個(gè)泛型形式參數(shù),在and中,實(shí)際傳入的你可以理解為Function接口的匿名實(shí)現(xiàn)類,這時(shí)候的泛型是實(shí)參,T和R都是QueryWrapper。而且and中你要追溯源碼,最后確實(shí)調(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);
? ? }
你也可以運(yùn)行時(shí)debug一下,根據(jù)方法調(diào)用棧追蹤一下。
2022-07-07