美文网首页
Lambda表达式-匿名内部类的区别-002

Lambda表达式-匿名内部类的区别-002

作者: 小尾巴1024 | 来源:发表于2019-01-03 21:52 被阅读0次

Lambda表达式和匿名内部类在JVM中处理的方式是不一样的

匿名内部类实现

匿名内部类仍然是一个类,只是不需要程序员显示指定类名,编译器会自动为该类取名。

//下面这个java文件被编译后,jvm会生成2个class文件,一个是主类,另一个是匿名类
public class MyDemo {
    public static void main(String[] args) {
        new Thread(new Runnable(){
            @Override
            public void run(){
                System.out.println("Thread run()....");
            }
        }).start();
    }
}
生成两个class

Lambda表达式实现

Lambda表达式通过invokedynamic指令实现,书写Lambda表达式不会产生新的类。如果有如下代码,编译之后只有一个class文件:

public class LambdaDemo {
    public static void main(String[] args) {
        new Thread(
                () -> System.out.println("Lambda Thread run()...")
        ).start();
    }
}
只生成一个class

那么,在lambda表达式内使用this有何意义呢?

在lambda表达中引用this关键字,和在lambda外部引用的意义一样,因为lambda不是内部类的代表,那么在lambda内部引用this也就和内部类没什么关系了。

//下面的代码将输出再次Hello...
public class LambdaDemo {
    Runnable r1 = () -> { System.out.println(this); };
    Runnable r2 = () -> { System.out.println(toString()); };
    public static void main(String[] args) {
        new LambdaDemo().r1.run();
        new LambdaDemo().r2.run();
    }

    public String toString() {
        return "Hello...";
    }
}

参考:http://www.cnblogs.com/CarpenterLee/p/6729368.html

相关文章

  • 2020-07-04【Lambda】

    Lambda标准格式 Lambda省略模式 Lambda注意事项 Lambda表达式和匿名内部类的区别

  • Kotlin之Lambda表达式和成员引用

    Lambda介绍:作为函数参数的代码块 用匿名内部类实现监听器 现在用Kotlin的Lambda表达式来替换匿名内...

  • Java8 Lambda表达式

    1.替代匿名内部类 使用匿名内部类 使用lambda表达式 2.使用lambda表达式对集合进行迭代 3.使用la...

  • Lambda表达式

    本章节主要介绍lambda表达式简化匿名内部类的写法,但lambda表达式不能取代所有的匿名内部类,只能用来取代函...

  • Lambda

    Lambda表达式 Lambda表达式其实是一个匿名函数,是对匿名内部类的一种简化 Lambda表达式是函数式编程...

  • Java 8新特性

    Lambda表达式与Functional接口 Lambda表达式 可以认为是一种特殊的匿名内部类lambda只能用...

  • Lambda表达式-03-02

    外部类实现线程接口: 内部类实现线程接口: 匿名内部类: jdk8的Lambda表达式:

  • Lambda表达式和函数式接口

    初识lambda表达式 lambda表达式是Java8的新特性,可以将lambda表达式看成是精简语法的匿名内部类...

  • Lambda表达式-匿名内部类的区别-002

    Lambda表达式和匿名内部类在JVM中处理的方式是不一样的 匿名内部类实现 匿名内部类仍然是一个类,只是不需要程...

  • 34.Lambda表达式:简化规则&常见应用

    Lambda表达式 Lambda概述 Lambda表达式是JDK8开始后的一种新的语法形式 作用:简化匿名内部类的...

网友评论

      本文标题:Lambda表达式-匿名内部类的区别-002

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