function函数传参

来源:3-5 条件构造器查询(4)

weixin_慕田峪341811

2019-06-14 17:03

我在上个视频中听您说到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回答

  • 老猿
    2019-06-15 14:20:02

    该函数式接口声明了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一下,根据方法调用栈追踪一下。


  • athr
    2022-07-07 09:04:06
    public Children and(boolean condition, Consumer<Children> consumer) {
        return this.and(condition).addNestedCondition(condition, consumer);
    }


    athr

    在AbstractWrapper类中,debug可以找到。

    2022-07-07 09:05:02

    共 1 条回复 >

MyBatis-Plus入门

MyBatis-Plus框架入门必学课程!

56141 学习 · 381 问题

查看课程

相似问题