美文网首页
java lambda表达式

java lambda表达式

作者: 三十五岁养老 | 来源:发表于2022-05-09 16:09 被阅读0次

记录一次阅读源码疑问

@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
}

按照常规理解bb.accept() 应该死循环了,实验发现并没有
将lambda换成常规写法应该是以下这样,默认调用的外部指针

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

相关文章

  • Java 8 - Lambda表达式

    Java 8 - Lambda表达式 1 Java 8-概述2 Java 8 - Lambda表达式3 Java ...

  • 【Java】4.0 Java中lambda表达式(下)

    【Java】3.0 Java中lambda表达式(上)【Java】4.0 Java中lambda表达式(下) 7....

  • java 8 lambda表达式中的异常处理

    java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,lambda表达式可以...

  • java8

    1.lambda表达式《java8 Lambda表达式简介》 《java8 lambda表达式,方法的引用以及构造...

  • 《Java 8实战》学习总结

    Java 8新特性概览 Lambda表达式 流 默认方法 Lambda表达式 Lambda和函数式接口Java 8...

  • Java零基础自学DAY10 2018-03-22

    Java 8 新增的lambda表达式 Lambda 转换: Lambda表达式组成: 形参列表 箭头 ( ->)...

  • Java 8、9 语言新特性

    Java语言新特性 Java8 Java 8 新特性 Lambda 表达式 Lambda表达式(也叫做闭包)是Ja...

  • Java的Lambda表达式

    Java的Lambda表达式 1. 什么是Lambda表达式 简单的说,Lambda表达式就是匿名方法。Lambd...

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • 7 Lambda表达式

    Lambda表达式是Java8的重要更新,Lambda表达式支持将代码块作为方法参数,Lambda表达式允...

网友评论

      本文标题:java lambda表达式

      本文链接:https://www.haomeiwen.com/subject/gjdxurtx.html