为了账号安全,请及时绑定邮箱和手机立即绑定

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下载
官方微信