亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

function函數傳參

我在上個視頻中聽您說到function這個接口有兩個泛型,R和T,然后您又說到我們傳進來的的參數和返回值都是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()方法里面又沒有調用apply這個方法啊,我就這里沒有搞懂,望指點

正在回答

2 回答

該函數式接口聲明了T、R兩個泛型形式參數,在and中,實際傳入的你可以理解為Function接口的匿名實現類,這時候的泛型是實參,T和R都是QueryWrapper。而且and中你要追溯源碼,最后確實調用apply了,我給你列出最后調用apply的代碼,在AbstractWrapper類中:

? ? protected Children addNestedCondition(boolean condition, Function<Children, Children> func) {

? ? ? ? return doIt(condition, LEFT_BRACKET, func.apply(instance()), RIGHT_BRACKET);

? ? }

你也可以運行時debug一下,根據方法調用棧追蹤一下。


2 回復 有任何疑惑可以回復我~
public?Children?and(boolean?condition,?Consumer<Children>?consumer)?{
????return?this.and(condition).addNestedCondition(condition,?consumer);
}


0 回復 有任何疑惑可以回復我~
#1

athr

在AbstractWrapper類中,debug可以找到。
2022-07-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

function函數傳參

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號