美文网首页Java
区分lambda表达式与匿名内部类

区分lambda表达式与匿名内部类

作者: 小鸡在路上 | 来源:发表于2019-10-12 22:17 被阅读0次

java8出来了很久了,但是java8的广泛应用到商业开发也还是这几年。用java8我想其中有一个很重要的特性就是lambda表达式。在网上看了很多人说lambda表达式其实就是匿名内部类的一种简写。因为本身自己也用了有一段时间的java8了。对于lambda表达式是匿名内部类的简写的说法做一次反驳。其实lambda表达式和匿名内部类有本质的区别。通过代码证明一下:

public class StreamTest4 {

     Runnable r1 = ()->System.out.println("lambda:"+this);

     Runnable r2 = new Runnable() {
        @Override
        public void run() {
            System.out.println("匿名内部类"+this);
        }
    };

    public static void main(String[] args) {
        StreamTest4 streamTest = new StreamTest4();
        Thread t1 = new Thread(streamTest.r1);
        t1.start();

        Thread t2 = new Thread(streamTest.r2);
        t2.start();
    }
}

// 输出的结果:
// lamda:com.lc.memory.StreamTest4@251b4afc
// 匿名内部类com.lc.memory.StreamTest4$1@60f00729

我们可以看到对于this 这个作用域有本质的区别 lambda表达式中 this指向的是实例对象的地址,而匿名内部类中的this 则指向的是 匿名内部类的实例地址。

相关文章

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

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

  • Java 8新特性

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

  • Java8 Lambda表达式

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

  • Lambda表达式

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

  • 2020-07-04【Lambda】

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

  • Lambda

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

  • Lambda表达式-03-02

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

  • Lambda表达式和函数式接口

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

  • 区分lambda表达式与匿名内部类

    java8出来了很久了,但是java8的广泛应用到商业开发也还是这几年。用java8我想其中有一个很重要的特性就是...

  • 《深入理解Java函数式编程》系列文章

    《深入理解Java函数式编程》系列文章 目录 Lambda表达式和匿名内部类(I),展示如何使用Lambda表达式...

网友评论

    本文标题:区分lambda表达式与匿名内部类

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