关于lambda表达式的一些疑问

@FunctionalInterface
public interface Consumer<T> {


    void accept(T t);

    
    default Consumer<T> andThen(Consumer<? super T> after) {
       

  //这个accept为什么没有循环调用,按照正常理解,表达式里面accept(t)调用的还是自己的 accept
          return (T t) -> { accept(t); after.accept(t); };
    }
}

public void test () {
       Consumer<Number> aa = new Consumer<Number>() {
            @Override
            public void accept(Number number) {

            }
        };

        Consumer bb = aa.andThen(new Consumer<Number>() {
            @Override
            public void accept(Number number) {

            }
        });
      bb.accept(1);  //此时先调用 bb lambda表达式里面的accept, 然后accept 又调用了 accept,这个不是调用bb 自己的accept了吗,为啥会调用aa的accept
}

(T t) -> { accept(t); after.accept(t); };

这个的意思可以换成常规格式

new Consumer<T>() {
            @Override
            public void accept(T t) {
                Consumer.this.accept(t);
                after.accept(t);
            }
        };

所以bb.accept在执行的时候相当于分别执行了aa.accept和andThen中的accept。