美文网首页
java lambda表达式

java lambda表达式

作者: leo小超 | 来源:发表于2019-06-19 20:15 被阅读0次
lambda表达式原理,在类中新增1个私有静态类,方法名为lambda$方法名$index
  public void method() {
        List<Integer> list = Arrays.asList(1);
        list.forEach(item -> {
            item = item + 1;
            System.out.println(item);
        });
    }

通过javap -c -private XX.class查看字节码

public void method();
    Code:
       0: iconst_1
       1: anewarray     #5                  // class java/lang/Integer
       4: dup
       5: iconst_0
       6: iconst_1
       7: invokestatic  #6                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      10: aastore
      11: invokestatic  #7                  // Method java/util/Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
      14: astore_1
      15: aload_1
      16: invokedynamic #8,  0              // InvokeDynamic #0:accept:()Ljava/util/function/Consumer;
      21: invokeinterface #9,  2            // InterfaceMethod java/util/List.forEach:(Ljava/util/function/Consumer;)V
      26: return

  private static void lambda$method$0(java.lang.Integer);
    Code:
       0: aload_0
       1: invokevirtual #10                 // Method java/lang/Integer.intValue:()I
       4: iconst_1
       5: iadd
       6: invokestatic  #6                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       9: astore_0
      10: getstatic     #11                 // Field java/lang/System.out:Ljava/io/PrintStream;
      13: aload_0
      14: invokevirtual #12                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      17: return
}

多了1个方法,private static void lambda$method$0(java.lang.Integer);
如果新增lambda$method$0一个方法,代码无法编译过

 private static void lambda$method$0(Integer item) {
        System.out.println(item);
  }

相关文章

  • 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/ybwcaqtx.html