Lambda和匿名内部类中this指向不同的对象

Lambda和匿名内部类中this指向不同的对象

目录:


      this 对象在 lambda 和 匿名内部类 中的区别

      什么时候使用方法引用替换Lambda表达式



1. this 对象在 lambda 和 匿名内部类 中的区别


1.1 我们可以通过打印在lambda和匿名内部类中this对象的地址来验证这个对象的具体指向

public class EnumLearningTest {
    // 用于 Lambda 和 匿名内部类 this 对象的比较
    public final String NAME = "测试";

    @Test
    public void t1() {
        // 错误的以为枚举还可以通过构造器进行二次构造,枚举类创建的时候就已经被构造初始化了,不能再次进行二次构造
        // System.out.println(Operation.PLUS("+",1,2));
        System.out.println(Operation.PLUS.applyByDoubleBinaryOperator(1, 2));

        Arrays.asList(1, 2, 3).forEach(integer -> {
            System.out.println("Lambda 中,关键字 this 是指外围实例:" + this);
            System.out.println(this.NAME);
        });
        Arrays.asList(1, 2, 3).forEach(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) {
                System.out.println("在匿名类中,关键字this是指匿名类实例:" + this);
                System.out.println(integer);
            }
        });
    }
}

1.2 控制台打印

Lambda 中,关键字 this 是指外围实例:com.cintsoft.ace.space.provider.EnumLearningTest@769c9116
测试
在匿名类中,关键字this是指匿名类实例:com.cintsoft.ace.space.provider.EnumLearningTest$1@6aceb1a5

1.3 参考

Effective Java 的154页


2. 什么时候使用方法引用替换Lambda表达式


返回目录

1.1 原则

如果方法引用比lambda更加简短,那么就是用方法引用,否则还是使用lambda可读性会更加强。

1.2 替换示例

在这里插入图片描述

1.3 参考

Effective Java 的155页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值